我在使用 Excel 中的 IF 函数时遇到了问题。
我有一个单元格,设置为“日期/小时”,格式为“24:00”,我想要进行以下计算(假设单元格 A5):
if A5 < 0:30, then A5 == 0:30, else A2-A1
基本上:如果 A5 小于半小时,则必须显示半小时,否则显示差值。我这样做了:
=IF(A5<0:30;"0:30";A2-A1)
但不起作用。我遗漏了什么?
谢谢
答案1
"00:30"
您不能直接在算术运算中使用诸如 之类的字符串<
,-
就像您不能在算术运算中使用任何字符串一样。通常最好将它们存储为 Excel 用于日期和时间的数字,而不是使用字符串(请参阅https://excel.tips.net/T002176_How_Excel_Stores_Dates_and_Times.html#:~:text=Internally%2C%20Excel%20stores%20a%20date%20or%20time%20as,decimal%20point%29%20represents%20the%20time%20for%20that%20date。 更多细节)。
使用Time
选项格式化单元格将以 格式显示它们。使用 格式(或格式)hh:mm:ss
格式化单元格(例如 和 )将允许您使用小时和分钟输入时间值,但 Excel 实际上会将它们存储为内部日期/时间数字(您可以暂时将单元格格式更改为以查看这些数字是什么)。A1
A2
A5
Time
Custom
hh:mm
General
如果你这样做然后将你的公式更改为
=IF(A5<TIME(0,30,0),TIME(0,30,0),A2-A1)
会执行您想要的操作。该TIME
函数接受三个参数,即小时、分钟和秒,因此TIME(0,30,0)
与 00:30:00 的时间相同(即,以数字表示时为 1/48 或 0.0208333333333333)。
虽然 Hannu 提到的TEXT
函数是正确的,并且会将数字转换hh:mm
为该数字的表示形式,但结果值是字符串,因此 (i) 不能用于算术运算,并且 (ii) 不会直接保留底层数值。但是,该VALUE
函数可用于从字符串中检索数值(例如=VALUE("00:30")
提供数字 0.02083333333333333),因此底层数值被保留,但保留方式是间接的。
Excel 处理日期和时间的方法以及相关函数值得了解。如果你这样做,它将使你更容易理解和创建日期和时间的算术运算。
答案2
请注意,所有时间和日期值均存储为相对于基准日期的偏移量。
=TEXT(A5;"HH:MM")
将显示 A5 内容为00:30
(结果可以以该格式在公式中使用!)
但实际值0.020833333333333
代表与基准日期相差 30 分钟。
每 24 小时将值增加 1.0,并且上面使用的 30 分钟值如该公式所示=1/(0.020833333333333/30/60)
- 显示结果为86400
...每 24 小时的秒数(= 24x60x60)。
在单元格中输入0
并将其格式化为日期(包含年份和所有内容),您将看到基准日期;这可能因电子表格(软件!)而异,也取决于文件格式。
答案3
如果时间少于半小时,则不需要显示iF
,您可以使用:30:00
=MAX(1/48,A5)
对于 Excel 来说,1
是一整天,半小时是 (1/24)/2 或 1/48)
正如 Hannu 提到的,你确实需要将单元格格式化为时间