开始日 | 完结日 | 所用日数 | 2012年12月5日 | 2012年12月6日 | 0 | 2012年12月6日 | 2012年12月8日 | 0 | 2012年12月7日 | 2012年12月9日 | 2 | 2013年2月13日 | 2013年2月15日 | 2 | 2013年2月16日 | 2013年2月19日 | 3 | 2013年3月1日 | 2013年3月8日 | 7 | 2013年3月1日 | 2013年3月9日 | 8 | 2013年3月3日 | 2013年3月6日 | 3 | 2013年6月8日 | 2013年6月10日 | 2 | 2013年6月8日 | 2013年6月10日 | 2 | | | | | 所用天数 | |
《=在这里,因为想不计算重复,所以想所用天数是:20日(因为2012-12-05到2012-12-09(4日),2013-02-13到2013-02-19(6日),2013-03-01到2013-03-09(8日),2013-06-08到2013-06-10(2日) 因为有很多这样的表格,不可能每一次都心算,所以求VBA或function。谢谢!
选择所要计算的表格范围然后执行下面程序就可以了
Public Sub cx()
arr = Selection
n = UBound(arr)
sterday = arr(1, 1)
endday = arr(1, 2)
daycount = 0
For i = 2 To n
If endday >= arr(i, 1) - 1 Then
If endday < arr(i, 2) Then endday = arr(i, 2)
Else
daycount = daycount + (endday - sterday)
sterday = arr(i, 1)
endday = arr(i, 2)
End If
If i = n Then daycount = daycount + (endday - sterday)
Next i
MsgBox daycount
End Sub
|