Excel VBA - 查找小时数差异

时间:2016-11-20 11:36:30

标签: excel vba excel-vba

我有一个值为

的列

09:00 - 21:00

试着找出如何在数小时内获得差异,即。对于此示例12

4 个答案:

答案 0 :(得分:2)

你可以使用这个功能

Function GetHourDifference(cell As Range) As Long
    GetHourDifference = Hour(Split(cell.Value, "-")(1)) - Hour(Split(cell.Value, "-")(0))
End Function

在主代码中被利用如下

MsgBox GetHourDifference(Range("a1"))   '<--| if cell "A1" has value "09:00 - 21:00" it returns: 12

答案 1 :(得分:0)

如果您的09.00 - 21.00位于单元格 B7 中,则可行:

=TIME(RIGHT(B7,5),RIGHT(B7,2),)-TIME(LEFT(B7,5),MID(B7,4,2),)

非常蛮力,因为它假定时间总是00.00,并且不会包含其他字符。

答案 2 :(得分:0)

Option Explicit

Sub Macro1()
Dim txtDate As String
Dim i As Integer
Dim varDateDif As Variant, split1 As Variant, split2 As Variant

' Cell with times
txtDate = Range("A2").Value

' Split the cell using the delimiter -
varDateDif = Split(txtDate, "-")

For i = 0 To LBound(varDateDif)
    split1 = varDateDif(i) ' First time
    split2 = varDateDif(i + 1) ' Second time
Next i

' Difference in hours
Range("B2").Value = Abs(CDate(split1) - CDate(split2))
' Difference in minutes
Range("C2").Value = DateDiff("n", split1, split2)

End Sub

答案 3 :(得分:0)

如果您正在寻找配方解决方案,请使用以下内容:

=HOUR(RIGHT(C24,5))-HOUR(LEFT(C24,5))
只要您的值始终采用所提供的格式,

就可以正常工作。

如果您正在寻找VBA解决方案,请使用@ user3598756

的解决方案