2015-11-02 49 views
-1

我想計算一段時間內工作日(週六和週日)的總計。循環是可以的,但它不會像我想要的那樣給出結果。舉個例子,AD6 = 26/1/2015 5:00:00 PM和T6 = 2015年1月13日8:05:00 AM應該給4天,但它給怪異的數字807878.VBA計算整個行的總平日

這是什麼意思?我如何調整我的編碼以達到我想要的水平?有我用於這個過程的代碼。 謝謝!

Sub CalcWeek() 
Dim Date1 As Date, Date2 As Date, dateToCheck As Date 
Dim daysBetween As Long, weekdays As Long, i As Long 

Dim lrow As Long 
Dim PRow As Long 
Dim CurrentSheet As Worksheet 
Set CurrentSheet = Excel.ActiveSheet 
FRow = CurrentSheet.UsedRange.Cells(1).Row 
lrow = CurrentSheet.UsedRange.Rows(CurrentSheet.UsedRange.Rows.count).Row 

weekdays = 0 

For PRow = lrow To 2 Step -1 

For i = 0 To DateDiff("d", (CurrentSheet.Cells(PRow, "AD").Value), (CurrentSheet.Cells(PRow, "T").Value)) 

dateToCheck = DateAdd("d", i, CurrentSheet.Cells(PRow, "AD").Value) 

If (Weekday(dateToCheck) <> 2 And Weekday(dateToCheck) <> 3 And Weekday(dateToCheck) <> 4 And Weekday(dateToCheck) <> 5 And Weekday(dateToCheck) <> 6) Then 
CurrentSheet.Cells(PRow, "AI").Value = CurrentSheet.Cells(PRow, "AI").Value + 1 
End If 

Next i 
'CurrentSheet.Cells(PRow, "AJ").Value = weekdays 
Next PRow 
End Sub 

回答

0

最後我得到了我需要的東西!

Sub WeekDaysTotally() 

Dim Date1 As Date, Date2 As Date, dateToCheck As Date 
Dim daysBetween As Long, weekdays As Long, i As Long 

Dim lrow As Long 
Dim PRow As Long 
Dim CurrentSheet As Worksheet 
Set CurrentSheet = Excel.ActiveSheet 
FRow = CurrentSheet.UsedRange.Cells(1).Row 
lrow = CurrentSheet.UsedRange.Rows(CurrentSheet.UsedRange.Rows.count).Row 

For PRow = lrow To 2 Step -1 
weekdays = 0 

Date1 = Cells(PRow, "T") 
Date2 = Cells(PRow, "AD") 
daysBetween = DateDiff("d", Date1, Date2) 

For i = 0 To daysBetween 

dateToCheck = DateAdd("d", i, Date1) 
If Cells(PRow, "U").Value <> "" And Cells(PRow, "S").Value <> "" Then 
If (Weekday(dateToCheck) <> 2 And Weekday(dateToCheck) <> 3 And Weekday(dateToCheck) <> 4 And Weekday(dateToCheck) <> 5 And Weekday(dateToCheck) <> 6) Then 
    weekdays = weekdays + 1 
End If 
End If 
Next i 

Cells(PRow, "AL") = weekdays 

Next PRow 
End Sub 

本小節將計算總的工作日數,只計算細胞。 > <