Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/14.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
Excel 计算两个日期和时间之间的时差(以小时为单位)_Excel_Vba - Fatal编程技术网

Excel 计算两个日期和时间之间的时差(以小时为单位)

Excel 计算两个日期和时间之间的时差(以小时为单位),excel,vba,Excel,Vba,我创建了一个宏,它添加了一个名为“响应时间”的新列。我想计算两列中的值之间的时间差 我给出了一个简单的公式, D2(列名)-C2(列名)=以HH:MM格式表示的总时间 当日期相同时,即24小时内的时间范围内,宏输出是正确的 但是,我希望宏在新添加的“响应时间”列中查找日期差异并计算总小时数 例如 C列(年月日hh:MM)2020年2月9日23:00 D列(年月日hh:MM)2020年3月9日22:00 新添加的名为(响应时间)的列中的输出应为25:00小时,因为差值为1天1小时,所以总共为25小

我创建了一个宏,它添加了一个名为“响应时间”的新列。我想计算两列中的值之间的时间差

我给出了一个简单的公式,
D2(列名)-C2(列名)=以HH:MM格式表示的总时间

当日期相同时,即24小时内的时间范围内,宏输出是正确的

但是,我希望宏在新添加的“响应时间”列中查找日期差异并计算总小时数

例如
C列(年月日hh:MM)2020年2月9日23:00
D列(年月日hh:MM)2020年3月9日22:00
新添加的名为(响应时间)的列中的输出应为25:00小时,因为差值为1天1小时,所以总共为25小时

Excel屏幕输出错误

在突出显示的区域中,C列和D列有两个不同的日期,其中时间跨度超过24小时,F列中的输出不正确

我需要一个编码公式来比较这两列的日期时间,并以HH:MM格式给出总小时数。
在上面突出显示的区域中,总小时数应大致显示162小时

子响应6()
'查找并减去(_recvd-_actual)
‘海运码头(CY或港口)的全进式闸门’
‘海运码头(CY或港口)的全进闸门’
尺寸lastR与长度相同,cl与范围相同,col1与长度相同
使用ActiveWorkbook.Worksheets(“主”)
对于范围内的每个cl(“1:1”)
如果cl.Value=“海运码头(CY或港口)的登机口已满”\u recvd”,则
cl.Offset(0,1).entireclumn.Insert移位:=xlRight
cl.Offset(0,1)=“响应时间”
cl.副本
cl.Offset(0,1).粘贴特殊粘贴:=xlPasteFormats
Application.CutCopyMode=False
Exit For'查找列后退出循环
如果结束
下一个cl
使用ActiveWorkbook.Worksheets(“主”)
col1=.Cells.Find(What:=“海运码头(CY或港口)的登机口已满”\u实际“_
之后:=.Range(“A1”),LookIn:=xlValues_
查看:=xlother,搜索顺序:=xlByRows,搜索方向:=xlNext_
MatchCase:=False,SearchFormat:=False)。列
如果col1=0,则MsgBox“找不到列标题…”:退出Sub
lastR=.Cells(Rows.Count,cl.Column).End(xlUp).Row'最后一行
'将公式(立即):
.Range(cl.Offset(1,1),.Cells(lastR,cl.Offset(1,1).列))。公式=_
“=”&cl.Offset(1,0).地址(0,0)和单元格(2,col1).地址(0,0)&“/”和“60”
日期d1为日期时间=“2018年2月13日下午1:50:00”
Dim d2作为日期时间=“2018年2月20日下午1:50:00”
cl.Offset(,1).entireclumn.NumberFormat=“hh:mm”
以
以
端接头

  • D列中的公式:
    =C:C-B:B
  • D列中的数字格式:
    [h]:mm
这就是你所需要的。

  • D列中的公式:
    =C:C-B:B
  • D列中的数字格式:
    [h]:mm

这就是您所需要的。

要获得两个日期之间的总小时数,只需减去并应用适当的格式:

Sub INeedADate()
    [c1] = [b1] - [a1]
    Range("C1").NumberFormat = "[hh]:mm"
End Sub

要获得两个日期之间的总小时数,只需减去并应用正确的格式:

Sub INeedADate()
    [c1] = [b1] - [a1]
    Range("C1").NumberFormat = "[hh]:mm"
End Sub

获取小时数的最简单方法是:

日(D列-C列)*24+小时(D列-C列)


分钟数:分钟(D列-C列)

获取小时数的最简单方法是:

日(D列-C列)*24+小时(D列-C列)

分钟:分钟(D列-C列)

这是“保持简单愚蠢”原则的例证:-)这是“保持简单愚蠢”原则的例证:-)