Excel将日期范围转换为时间,以查找它是大于还是小于时间范围

时间:2018-11-08 19:18:53

标签: excel-formula

我有以下公式来计算时间大于3:00 pm或小于4:00 am的行。如果我的行E1:E5只有几次,它会按预期工作。但是,问题在于E列是日期时间,我希望保持这种状态。因此,公式当前返回0

公式

=COUNTIF(E1:E5,">="&TIME(15,0,0)) + COUNTIF(E1:E5,"<="&TIME(4,0,0))



E列
2018/10/1下午2:40:58
10/1/2018 2:11:58 AM
10/1/2018 2:09:50 AM
2018/10/1上午9:41:53
2018/10/1上午9:22:21

该公式应返回3。谢谢您的帮助。

2 个答案:

答案 0 :(得分:0)

如果您对帮助器列没问题(可以根据需要将其隐藏在AA列中),则可以执行以下操作:

如果您决定使用列AA,请在AA1中输入:

=MOD($E1, 1)

然后填写。任何实数都可以自己除,所以 MOD 只会返回余数-这就是代表时间的小数。

您的COUNTIF()公式将如下所示:

=COUNTIF($AA1:$AA5,">="&TIME(15,0,0)) + COUNTIF($AA1:$AA5,"<="&TIME(4,0,0))

答案 1 :(得分:0)

受一些建议的启发,我提出了以下建议:

enter image description here

 =SUMPRODUCT(
 ((A2:A17-TRUNC(A2:A17))>=0.625)*
 ((A2:A17-TRUNC(A2:A17))<=1))
 +SUMPRODUCT(
 ((A2:A17-TRUNC(A2:A17))>=0)*
 ((A2:A17-TRUNC(A2:A17))<=(1/6)))

编辑:根据其他答案,使用MOD而不是TRUNC更容易阅读:

 =SUMPRODUCT(
 (MOD(A2:A17,1)>=0.625)*
 (MOD(A2:A17,1)<=1))
 +SUMPRODUCT(
 (MOD(A2:A17,1)>=0)*
 (MOD(A2:A17,1)<=(1/6)))

说明:

A2:A17-TRUNC(A2:A17)仅返回数字的小数部分-时间

0.625-15:00(下午3点)

1-午夜

0-午夜

=0.1666671/6-4:00(凌晨4点)

我敢肯定还有其他方法可以做到这一点,但这似乎很简单,不需要帮助列。