VBA宏 - 从日期和时间中提取时间时间优秀的细胞 - VBA

时间:2017-06-20 11:45:50

标签: excel-vba date time vba excel

我需要列B和C,其中包含格式为mm/dd/yyyy hh:mm的数据 - 表示某些会议的开始(B列)和结束日期(C列)。

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

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

3 个答案:

答案 0 :(得分: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 :(得分:1)

Give this a try:

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

答案 2 :(得分:0)

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

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