2017-06-20 538 views
0

我必须包含数据的格式为mm/dd/yyyy hh:mm的B和C列,会议。VBA宏 - 从日期和时间excel单元提取时间 - VBA

我试图创建一个VBA宏,它可以从两列中仅提取格式为hh:mm的时间,然后计算两个时间点之间的差异,以便找出每个会议的持续时间(结果将显示在D栏中)。

你能告诉我们这里可以做些什么吗?

+0

如果B/C是日期时间只是通过它们两个,因为它们是作为参数datediff() –

+0

日期部分总是相同的每对? –

+1

这不需要宏,可以用公式计算 – avb

回答

1

在列d使用式

=(C:C-B:B)*24 

得到以小时的差异。


或者,而不是仅仅用下面的公式在列d

=C:C-B:B 

和格式列d随着时间得到的格式的区别就像hh:mm


您可以添加此公式到VBA所需的范围,如果需要的话,如

With Worksheets("MySheet").Range("D1:D5").Formula = "=(C:C-B:B)*24" 

或时间格式类似于

With Worksheets("MySheet").Range("D1:D5") 
    .Formula = "=C:C-B:B" 
    .NumberFormat = "hh:mm" 
End With 
1

这给一试:

Sub difff() 
    Dim i As Long, N As Long 

    N = Cells(Rows.Count, "B").End(xlUp).Row 
    For i = 1 To N 
     Cells(i, "D") = Cells(i, "C") - Cells(i, "B") 
    Next i 

    Range("D:D").NumberFormat = "hh:mm" 
End Sub 

enter image description here

0

随着19/06/2017 13:30:00A120/06/2017 13:39:00A2
给出定制数字格式[h]:mm:ss的公式=A2-A1返回24:09:00
h附近的方括号告诉Excel显示超过24小时的时间。
如果没有方括号,它会显示时间00:09:00。这是因为它计算为1天9分钟,但没有显示天数。

为了获得日期的时间,您可以将时间格式化为保持日期/时间飞镖部分的时间,但只显示时间。
或者,您可以删除日期/时间的整数以获得时间 - 在这种情况下日期部分将显示为00/01/1900。 =A1-INT(A1)