Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/excel/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在vba excel中处理时间时获取错误值_Excel_Vba - Fatal编程技术网

在vba excel中处理时间时获取错误值

在vba excel中处理时间时获取错误值,excel,vba,Excel,Vba,我试着在我的excel表格上做一些计算,我在使用宏,我在处理时间值 h2 = rg.Cells(i, 5) 'time value h1 = rg.Cells(i, 4) 'time value h3 = (TimeValue("23:59") - h1) + (h2 - TimeValue("23:59")) 例如,当h1=“20:00”和h2=“07:55”h3应该是11:55但它给出了12:05 顺便说一句,H1是入口时间,H2是超时时间,所以H2在第二天,我试图计算时间的差异

我试着在我的excel表格上做一些计算,我在使用宏,我在处理时间值

 h2 = rg.Cells(i, 5) 'time value
 h1 = rg.Cells(i, 4) 'time value
 h3 = (TimeValue("23:59") - h1) + (h2 - TimeValue("23:59"))
例如,当
h1=“20:00”
h2=“07:55”
h3应该是
11:55
但它给出了
12:05

顺便说一句,
H1
是入口时间,
H2
是超时时间,所以H2在第二天,我试图计算时间的差异


实际上,正确答案是-11:05:00,但Excel不处理负时间。减去11:05:00加上一天等于正12:05:00。

因为正如您所指出的,H2是H1之后的一天,您需要将其考虑到您的计算中

因此,为了计算H1和H2之间的差异,应先将24小时加到H2中

  h2  +  1dy
07:55 + 24:00 = 31:55

                  v
                         -h1
                31:55 - 20:00 = 11:55
以时间表示的一天是
1
——时间是以一天的小数点来度量的

因此,在许多其他方法中,要获得上述结果,您的公式应该是:


h3=(h2+1)-h1

你想在h3上得到什么??您的变量是否声明为
Date
?是的变量是时间值,它工作正常,除非它得到错误的值。如果给出错误的值,它应该是11:55,而不是12:05。让我们假设第二天的h1=12:00和h2=12:00使用您的公式将返回00,而它应该返回24小时。。对当然如果您希望它考虑日期和时间,则需要确保单元格包含日期。如果两者都包含日期,那么这只是一个从后一个时间中减去前一个时间的例子。嗯,没有日期,但我确定h2在第二天,所以没有办法?对不起,我现在明白你的推理了。该公式实际上按原样工作,包含1整天(24小时),问题是Excel将其格式化为时间,并且仅显示时间元素。将其重新格式化为
[hh]:mm
而不是
hh:mm
,它将显示
24:00
,单元格中根本没有时间(键入或显示),公式为
=(h2+1)-h1
?它在我的桌面上运行良好。