计算两个时间点间工作时间间隔的EXCEL 自定义函数
工作需要,经常需要计算两个时间点间工作时间的时长,需要考虑上班(8:30)、下班时间(17:10)和中午午休时间(12:00~12:40)。以前一直是手工计算,麻烦而且容易算错。第一次尝试用VBA 自定义函数解决此问题,网上搜索结果不多,经过一番尝试,结果还比较满意,供大家参考使用哈。
使用时直接输入:=WorkLaborDiff(a2,b2)。
Public Function WorkLaborDiff(Rng1 As Range, Rng2 As Range) As Double
Dim iAs Integer
i = (TimeValue(Rng2) - TimeValue(Rng1)) * 10000
If i>= 0 And Hour(Rng2)
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24, 1)
ElseIfi>= 0 And Hour(Rng2) >= 12.666 And Hour(Rng1) >= 12.666 Then
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24, 1)
ElseIfi>= 0 And Hour(Rng2) >= 12.666 And Hour(Rng1)
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 - 40 / 60, 1)
ElseIfi
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8, 1)
ElseIfi= 12.666 And Hour(Rng1) >= 12.666 Then
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8, 1)
Else
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8 + 40 / 60, 1)
End If
End Function
计算两个时间点间工作时间间隔的EXCEL 自定义函数
工作需要,经常需要计算两个时间点间工作时间的时长,需要考虑上班(8:30)、下班时间(17:10)和中午午休时间(12:00~12:40)。以前一直是手工计算,麻烦而且容易算错。第一次尝试用VBA 自定义函数解决此问题,网上搜索结果不多,经过一番尝试,结果还比较满意,供大家参考使用哈。
使用时直接输入:=WorkLaborDiff(a2,b2)。
Public Function WorkLaborDiff(Rng1 As Range, Rng2 As Range) As Double
Dim iAs Integer
i = (TimeValue(Rng2) - TimeValue(Rng1)) * 10000
If i>= 0 And Hour(Rng2)
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24, 1)
ElseIfi>= 0 And Hour(Rng2) >= 12.666 And Hour(Rng1) >= 12.666 Then
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24, 1)
ElseIfi>= 0 And Hour(Rng2) >= 12.666 And Hour(Rng1)
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 - 40 / 60, 1)
ElseIfi
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8, 1)
ElseIfi= 12.666 And Hour(Rng1) >= 12.666 Then
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8, 1)
Else
WorkLaborDiff = Round((TimeValue(Rng2) - TimeValue(Rng1)) * 24 + 8 + 40 / 60, 1)
End If
End Function