time - 在 Excel 中处理负时间

标签 time excel vba

我使用宏从 SP 检索数据,然后将其放入电子表格中,在一列中我有多个时间值 (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 返回一个包含两个日期之间差异但仅包含工作时间的变体

最佳答案

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

如何将 -ve 值放入单元格 A2 中?我只需复制公式结果(以获取 -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)) 

关于time - 在 Excel 中处理负时间,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9519621/

相关文章:

.net - 将列索引转换为 Excel 列名称

vba - 有没有办法在 VBA 中获取枚举?

java - 该算法的时间复杂度是多少?

java - 如何确定在文本字段中输入的时间是否在两个预先设定的开始和结束时间的范围内?

android - 在 savedInstanceState 中存储日期的最佳方式是什么?

excel - 无法在 Excel VBA 中使用 .End(xlDown) 分配范围?

vba - 用户定义类型读取错误

sql - 通过 "caching"表 Access 提高DLookup的速度还是其他策略?

vba - 为什么在下面的VBA代码中使用Object类型而不是Sheet类型来声明变量?

javascript - 如何从 JS/Node.js 获取 Unix 风格的日期?