如果值为 12AM (00.00),则 Excel MOD 函数无法正常工作

如果值为 12AM (00.00),则 Excel MOD 函数无法正常工作

所以我用 MOD 函数来计算我的工作时间,我以前是从下午 XX 点开始并在上午 XX 点结束,如果没有 MOD 函数,我就无法正确计算如果我从下午 5 点开始并在午夜后结束。无论如何,如果我在午夜之前或之后完成工作,它都无法正常工作。但如果我准时在午夜完成工作并在单元格中输入 12 AM 的值,它使用以下公式会给我 0 的结果:=IF(C41=0,0,(MOD((C41-B41)-D41,1))*24) 但如果我输入值 12 并按回车键,它会给我正确的工作时间,但它也会将值更改为 12/01/1900 12:00:00 AM。为什么会这样?表格如下:

A       B           C           D       E               F
Date    Shift start Shift end   Break   Total x shift   Total
1-Oct   5:30 PM     12:00 AM            6.5             19
2-Oct   5:30 PM     12:00 AM            6.5 
4-Oct   12:00 PM     6:00 PM            6   

公式如下:

=IF(C41=0,0,(MOD((C41-B41)-D41,1))*24)

在 E 列的每个单元格中。

答案1

我不确定该回答哪个问题。你的原帖至少有三个不同的问题。将值 12 更改为 12/01/1900 12:00:00 AM 只是 Excel 的工作方式。你必须将列格式化为日期/时间,因此它会将输入的值转换为设置中指定的默认格式。根据你使用的 Excel 版本,你也可以将列格式化为简单的时间,或者修改格式以不显示日期,如 fixer1234 所说。

你认为 MOD 不起作用的原因很难说,因为你没有解释,但你用的方式很奇怪,而且应该如果您将 0(12am)作为第一个值传递给它,就会给您带来麻烦。这意味着您正在尝试除以 0,这是无法做到的。而且无论如何您也不需要它。

你的公式与泰森指出的类似,可以简单地

=if((C1-B1)<0, C1+12-B1, C1-B1)

请注意,您需要在“真实”结果中添加 12 小时,而不是 Tyson 所说的 24 小时。您需要将 B、C 和 D 列格式化为正常时间格式,但对于 E 和 F 列,您可能希望消除 am/pm 指示符。

结果列必须保持为时间格式,否则,Excel 将对 Excel 实际在后台存储的日期序列值执行数值计算,而不是日期计算,结果将完全不准确。例如,如果结果列的格式为数字字段,则 12am 至 6:30am 为 0.27。将其更改为时间格式,它会正确显示 6:30。

相关内容