Excel:计算一段时间内有多less行

我有一个2列的Excel表

列A =“CA”,“CR”或“IN”

B列=date和时间格式DD / MM / YYYY HH:MM

我想在每个具有这个标准的行的列底部进行计数:

i)第1-8行=“CA”

ii)第1-8行需要检查时间范围,即“17:00”和“04:59”

这是我到目前为止:

(B2:B8,“右”(文本(B2:B8,“hh:mm”),5)>“04:59”),B2:B8,RIGHT(文本(B2: B8, “HH:MM”),5)< “17:00”)

我认为在文本函数内使用范围是错误的,但不知道如何解决这个问题。

因为B列是date和时间格式,所以我不得不将它更改为函数内的一个string,这样我可以在时间上进行testing – 也许还有更好的办法?)

谢谢

COUNTIFS的问题是你不能很好地操纵条件。 您可以插入仅包含时间的列,在这种情况下,您可以使用COUNTIFS但如果不能,则可以使用SUMPRODUCT代替:

 =SUMPRODUCT((A1:A6="CA")*(((TEXT(B1:B6,"hh:mm")*1>TIME(17,0,0))+(TEXT(B1:B6,"hh:mm")*1<TIME(5,0,0)))>0)) 

这适用于示例范围A1的一些条件:B6:

(A1:A6="CA")确保该行具有CA

(TEXT(B1:B6,"hh:mm")*1>TIME(17,0,0)) ,确保时间在17:00以上

(TEXT(B1:B6,"hh:mm")*1<TIME(5,0,0)) ,确保时间在05:00之前(如果你的意思是你的意思是4:59 比4:59然后改变这部分)。

“最后两个条件+ ”是这两个条件,那么整个事情就是“与第一个条件相结合”。

这是很难用COUNTIFS做的,因为你不能用function修改范围…..但你可以用SUMPRODUCT来做到这一点 – 试试这个

=SUMPRODUCT((A2:A8="CA")*(MOD(B2:B8,1)<"17:00"+0)*(MOD(B2:B8,1)>"04:59"+0))

我假设你想 04:5917:00 之间 – 就你而言,ii)你performance出与你的公式中的相反的方式

MOD从date/时间中提取时间,以便与时间范围进行比较。 如果在包括整个小时的范围内计数,例如5到16,则可以使用没有MOD HOUR函数,即,

=SUMPRODUCT((A2:A8="CA")*(HOUR(B2:B8)>=5)*(HOUR(B2:B8)<=16))

你根本不需要处理string 。 Excel提供了相当多的date和时间function,足够你的情况。

一个简洁的公式

 =SUMPRODUCT((A1:A8="CA")*(MOD(B1:B8,1)<=TIME(17,0,0))*(MOD(B1:B8,1)>TIME(4,59,0))) 

笔记:

  1. 我假设你的意思是<=17:00 <17:00 ,而不是<17:00 。 如果我错了,修改公式很容易。
  2. 您使用了A2:A8,但是您可能想按照文本A1:A8。 如果我错了,修改公式很容易。
  3. COUNTIFS通常比SUMPRODUCT灵活得多(与MATCHINDEXSUM等其他函数结合使用)

PS:正如Barry Houdini指出的,OP要求两个相反的时间范围。 我在这里select了其中一个。