在excel中处理负面时间

时间:2012-03-01 16:06:04

标签: excel time excel-vba vba

我使用宏从SP检索数据然后将其放在spreadSheet中,在一列中我有倍数的倍数(h:mm),其中一些是正数(12:23)和一些负数( - 1:23),现在我希望有一个平均时间,但我的负数值有误。

我在网上发现使用1904日期系统修复了这个问题,但不是在我的情况下,因为我在单元格中放置了一个负值,而不是减去两个时间单元的结果。

例如,1904日期系统适用于这种情况:

A:1 -> 3:23 
A:2 -> 4:23 
A:3 -> =A1-A2 -> -1:00

我的情况:

A:1 -> 3:23
A:2 -> -4:23 (built in code behind as string value and placed it in the cell)
A:3 -> =A1-A2 -> ERROR

任何帮助将不胜感激

编辑:

以下是我设置单元格值的方法:

.Cells(i, k).Value = NetWorkhours(.Cells(i, 19).Value, .Cells(i, 20).Value, True)

NetWorkHours返回的变体具有两个日期之间的差异,但仅限工作时间

1 个答案:

答案 0 :(得分:2)

是1904日期系统修复此问题。但是,如果您的工作簿包含指向其他文件的链接,则不建议使用此方法,因为您可能会收到意外结果。

如何在单元格A2中放置-ve值?我只是复制一个公式结果(得到-ve值)并粘贴到单元格A2中的值,它完美地运行。

当你做A1 - A2时,究竟发生了什么

3:23 - (-4:23)=> 3:23 + 4:23 => 7:46

<强>后续

这是你输入值的方式使它成为问题:)

而不是A1 - A2尝试使用此公式

=IF(LEFT(A1,1)="-",VALUE(MID(A1,2,LEN(A1)-1)),VALUE(A1))-IF(LEFT(A2,1)="-",VALUE(MID(A2,2,LEN(A2)-1)),VALUE(A2))