我有一張帶有開始日期和結束日期的作業表。我想找出兩個日期之間有多少個星期一、星期二、星期三、星期四、星期五、星期六和星期日。所以我寫了以下函式。它作業正常,但一個月的第一天正在跳過。
=ABS(INT((N($B$5)-L10)/7)-INT((N($B$4)-L10)/7)) 'B4- Starting date and B5- Ending date
例如:1/10/2021 和 31/10/201 開始和結束日期。
按照上述功能 總計周一-4、周二-4、周三-4、周四-4、周五-4、周六-5 和周日-5
但最初是周一 4、周二 4、周三 4。周四 4 點、周五 5 點、周六 5 點、周日 5 點。
這里發生的事情是 2021 年 10 月 1 日是星期五。它跳過了一個月的第一天。
任何幫助......提前tqs......
uj5u.com熱心網友回復:
您可以使用我所說的“蠻力”方法,在其中創建所有相關日期的陣列,并檢查匹配項:
=SUMPRODUCT(N(WEEKDAY(ROW(INDEX($A:$A,$B$4):INDEX($A:$A,$B$5)))=L10))
由于您要求提供 VBA 解決方案,因此有一種方法:
Mnth可以是一個月中的任何日期
DOW是星期幾,1=Sunday
該函式使用相同的演算法——測驗范圍內的每個日期,看看它是否與所需的星期幾相匹配。
Option Explicit
Function weekdaysInMonth(Mnth As Date, Optional DOW As Long = vbSunday) As Long
Dim I As Long
Dim dStart As Date, dEnd As Date
Dim Cnt As Long
dStart = DateSerial(Year(Mnth), Month(Mnth), 1)
dEnd = DateSerial(Year(Mnth), Month(Mnth) 1, 0)
For I = dStart To dEnd
If Weekday(I) = DOW Then Cnt = Cnt 1
Next I
weekdaysInMonth = Cnt
End Function
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/358951.html
