Date & Time
Count specific weekdays between two dates (e.g., Mondays in a month)
Jump to the first matching weekday on or after StartDate using MOD and WEEKDAY, then divide the remaining span by 7.
Fast arithmetic weekday counting over any date span
Generating an array of thousands of dates just to count Fridays wastes memory over multi-year contracts. Instead, find the first occurrence of TargetIsoDow (1 = Monday through 7 = Sunday) on or after StartDate: first = StartDate + MOD(TargetIsoDow - WEEKDAY(StartDate, 2) + 7, 7).
If first > EndDate, the count is 0; otherwise, every additional occurrence falls exactly 7 days later, giving INT((EndDate - first) / 7) + 1.
Use date-only values and an integer weekday from 1 through 7. Reject reversed date ranges and invalid weekday inputs; the formula itself does not validate them.
| StartDate (A) | EndDate (B) | TargetIsoDow (C) | Occurrences |
|---|---|---|---|
| 2026-04-01 (Wed) | 2026-04-30 (Thu) | 1 (Monday) | 4 (Apr 6, 13, 20, 27) |
| 2026-04-01 (Wed) | 2026-04-30 (Thu) | 3 (Wednesday) | 5 (Apr 1, 8, 15, 22, 29) |
Closed-form weekday count formula
April 2026 starts on Wednesday (ISO 3) and ends on Thursday (April 30), so it contains 4 Mondays and 5 Wednesdays.
=LET(first, A2 + MOD(C2 - WEEKDAY(A2, 2) + 7, 7), IF(first > B2, 0, INT((B2 - first) / 7) + 1))Short-interval zero-match boundary
Between Wednesday April 1 and Friday April 3, the first Monday is April 6 (> EndDate), so the formula cleanly returns 0.
=LET(first, A2 + MOD(3 - WEEKDAY(A2, 2) + 7, 7), IF(first > B2, 0, INT((B2 - first) / 7) + 1))Try the example
Use the original values or change them to test your understanding.