我有一个公式,可以显示通知客户所花的时间(小时和分钟)。我需要创建另一个单元格来说明YES
该通知是否为 4 小时或更长时间。
我目前的公式如下:
=IF(OR(AND(MOD(P2,1)>=TIME(4,0,0))),"YES","NO")
P2
通知客户端所花的时间(小时/分钟)是多少。
此公式按我希望的方式工作,除非它等于 4 小时,否则它返回的是NO
,而不是YES
。
任何帮助都将不胜感激!
答案1
除非你没有告诉我们什么,否则我认为你的公式中 OR、AND 或 MOD 毫无用处。实际上,我能想到不任何条件,在特定公式中,OR 或 AND 都具有任何用途 - 它们是多条件,用于评估多个条件,如果任何条件(对于 OR)或所有条件(AND)为 TRUE,则返回 TRUE/FALSE。但是,您只有一条件,因此 OR 和 AND 的求值结果始终与条件本身相同。MOD 的目的在这里仍然有点令人困惑。很有可能这些位和/或源数据中存在某些东西破坏了您的结果。
就我个人而言,我更喜欢让 Excel 给出一个简单的布尔值 TRUE/FALSE,而不是“是”/“否”,因为这样可以更轻松地在其他公式中使用单元格的值。例如,如果 B1 有一个布尔值,我可以使用=IF(B1,"RUNNING SLOW!","Timely response!")
而不是=IF(B1="Yes","RUNNING SLOW!","Timely response!")
。编写初始公式也更简单 - 考虑=A1=B1
vs. =IF(A1=B1,"Yes","No")
。
只要您的时间格式为实际时间,这就可以正常工作以返回布尔值 TRUE/FALSE(假设时间在 A1 中):
=A1>=TIME(4,0,0)
如果你真的想要“是”/“否”的回答,把它放在如果中:
=IF(A1>=TIME(4,0,0),"Yes","No")
编辑:经过进一步的考虑,我想我可能已经猜到了 MOD 的参与(OR 和 AND 实际上仍然没有任何位置在那里)。
如果你使用 MOD 从日期/时间值中去除日期,那么可能导致您的问题。我不太清楚是怎么回事,但我估计这可能与闰年/闰分/闰秒有关,因为 Excel 存储日期和时间是基于自 1900 年 1 月 1 日以来的时间来存储的。其中可能还涉及一些舍入误差。
抛开猜测,以下是正确的去除公式中的日期部分的方法:
=TIME(HOUR(A1),MINUTE(A1),SECOND(A1))>=TIME(4,0,0)
如果你仍然喜欢“是”/“否”:
=IF(TIME(HOUR(A1),MINUTE(A1),SECOND(A1))>=TIME(4,0,0),"Yes","No")
就此而言,我们甚至可以进一步简化:
=HOUR(A1)>=4
或者...
=IF(HOUR(A1)>=4,"Yes","No")
请注意,HOUR 的可能值上限为 23。但是,如果您无论如何都要使用实际日期/时间格式作为源数据(并且您的公式很好地暗示了您这样做),那么这将不是问题。