Available in:All versions (return_type 11 to 17 from Excel 2010) (Works in Excel 2007, every later version, Microsoft 365 and Excel for the web)Examples need Excel 2021 or laterCategory:Date & time

WEEKDAY

WEEKDAG in Dutch Excel

Returns the day of the week of a date as a number, where return_type decides which day counts as 1.

Difficulty rating 2 of 5. One date in, one number out; the catch is that the default numbers Sunday as 1, so without return_type 2 every weekday test is off by a day.

Last updated: 13 October 2026

See the worked examples

Sheet excerpt: C3 holds the formula
RowABC
1LocationCount dateDay number
2Tiel30 Dec 2025
3Zwolle27 Dec 202566=WEEKDAY(B3, 2)=WEEKDAY(B3; 2)
4Breda31 Dec 2025
5Venlo2 Jan 2026
Formula cell (C3)Input

Result: 6

=WEEKDAY(B3, 2)
=WEEKDAY(B3; 2)

What WEEKDAY does and when to use it

What it does: it turns a date into a number that tells you which day of the week it is, for example to see whether a journal entry was posted on a weekend.

When to use it: whenever a rule depends on the day: flagging weekends, summing weekend sales or finding the next delivery day. It returns a number, not a name; for the name use CHOOSE, or TEXT with the code dddd. To count or step over working days, NETWORKDAYS and WORKDAY are the better choice.

How Excel evaluates it

Excel reads serial_number and drops any time part. It works out which day of the week that date falls on, then looks at return_type to decide the numbering and returns the matching number. Only the day names you produce with TEXT follow the Excel language, so Saturday in English Excel is zaterdag in Dutch Excel.

Watch out: The numbering does not follow your regional settings: Dutch Excel also uses Sunday = 1 unless you pass 2.

Mental model

A week printed as seven numbered boxes. return_type decides which box is labelled 1; WEEKDAY tells you which box the date falls in.

WEEKDAY(serial_number, [return_type])
WEEKDAY(serial_number; [return_type])
Arguments
ArgumentTypeMeaningDefault
serial_numberRequiredThe date whose day of the week you want.
return_typeOptionalWhich day is 1: 1 = Sunday (default), 2 = Monday.1

Return value:A number: the day of the week, counted as return_type sets

Formulas use commas (,) between arguments, as in English Excel. Formulas use semicolons (;) between arguments, as in Dutch Excel. Formulas use commas (,) between arguments, as in English Excel; Dutch Excel uses semicolons (;).

Worked examples

Beginner

Which day of the week was the stock count?

You are planning your attendance at the year-end stock counts of Veldhuis Installatie BV. The client's count schedule lists the count date per location. You want the day of the week as a number, with Monday as 1, so you can see at a glance which counts fall on a weekend.

Sheet excerpt: C3 holds the formula
RowABCD
1LocationCount dateDay number
2Tiel30 Dec 2025
3Zwolle27 Dec 202566=WEEKDAY(B3, 2)=WEEKDAY(B3; 2)
4Breda31 Dec 2025
5Venlo2 Jan 2026
6
Formula cell (C3)Input

Formula in C3

=WEEKDAY(B3, 2)
=WEEKDAY(B3; 2)

Result: 66

Step by step
  1. Excel reads B3: 27 Dec 2025, serial number 46018. That is the serial_number.
  2. It works out that 27 Dec 2025 is a Saturday.
  3. return_type is 2, so Monday is 1, Tuesday 2, Wednesday 3, Thursday 4, Friday 5 and Saturday 6. Excel returns 6.
  4. Without the 2, the default numbering starts on Sunday, and the same Saturday would be 7.
  5. Copy the formula to C4: B4 is Wednesday 31 Dec 2025, so the result is 3.

Watch out: Dates in an exported specification often arrive as text, for example 27.12.2025 or n/a left-aligned in the cell. When Excel cannot read the text as a date, WEEKDAY returns #VALUE!, depending on the format and your regional settings. Real dates align right by default; text aligns left.

More on this example: why it works

Why it works

Every date is a serial number, and the day of the week repeats every 7 numbers, so Excel can always tell which day a date is. return_type only relabels the seven days; picking 2 makes the numbers match the week the way it is printed on Dutch and most European calendars.

Intermediate

Flag journal entries posted on a weekend

For journal entry testing you want every line of the XAF export marked as a weekend posting or a weekday posting, because weekend entries deserve a closer look. The formula goes in column D and is copied down. One line has no posting date.

Sheet excerpt: D3 holds the formula
RowABCDE
1DateEntry no.JournalDay type
228 Nov 202525-0388INK
329 Nov 202525-0391MEMWeekend=IF(WEEKDAY(A3, 2) > 5, "Weekend", "Weekday")=IF(WEEKDAY(A3; 2) > 5; "Weekend"; "Weekday")
430 Nov 202525-0392BNK
51 Dec 202525-0395INK
625-0399MEM
7
Formula cell (D3)Input

Formula in D3

=IF(WEEKDAY(A3, 2) > 5, "Weekend", "Weekday")
=IF(WEEKDAY(A3; 2) > 5; "Weekend"; "Weekday")

Result: Weekend

Step by step
  1. Excel evaluates WEEKDAY(A3, 2) first. A3 is 29 Nov 2025, a Saturday, and with return_type 2 Saturday is 6.
  2. IF tests 6 > 5, which is TRUE, so it returns the second argument: Weekend.
  3. Copied down:

    • A2 (Friday Nov 28) gives 5, so Weekday
    • A4 (Sunday Nov 30) gives 7, so Weekend
    • A5 (Monday Dec 1) gives 1, so Weekday
  4. Contrast with the default numbering, WEEKDAY(A2) > 5: Friday becomes 6 and is flagged as weekend, while Sunday becomes 1 and is not. The test looks the same but marks the wrong days.
  5. For D6, the date in A6 is blank. WEEKDAY reads it as serial number 0, which Excel treats as a Saturday, so it returns 6 and the line is marked Weekend.

Watch out: The blank date in row 6 is marked Weekend, so a line you cannot date lands in your weekend selection for the wrong reason. Test for an empty date first, and ask the client why the posting date is missing.

More on this example: why it works, 2 variations

Why it works

With return_type 2, Monday to Friday are 1 to 5 and the weekend is 6 and 7, so one comparison, greater than 5, separates the two groups. With the default numbering the weekend is 1 and 7, at both ends, and needs two tests.

Variations

=CHOOSE(WEEKDAY(A3, 2), "Mon", "Tue", "Wed", "Thu", "Fri", "Sat", "Sun")
=CHOOSE(WEEKDAY(A3; 2); "Mon"; "Tue"; "Wed"; "Thu"; "Fri"; "Sat"; "Sun")

A short day name that you control: WEEKDAY gives 6, CHOOSE picks the sixth label, Sat. The order of the labels must match return_type 2.

=TEXT(A3, "dddd")
=TEXT(A3; "dddd")

The full day name, Saturday, without WEEKDAY. The name follows the Excel language: Dutch Excel shows zaterdag.

Advanced

Total the sales invoiced on weekends

In the sales journal (VRK) of Veldhuis Installatie BV you want to know how much was invoiced on a Saturday or Sunday in the weeks before year end, because weekend sales near the cut-off are a classic cut-off risk. The export has the posting date, the entry number and the credit amount, and you want one cell with the total, without a helper column.

Sheet excerpt: E2 holds the formula
RowABCDEF
1DateEntry no.CreditWeekend sales
219 Dec 202525-0771€18,450.00€ 18.450,00€20,100.00€ 20.100,00=SUMPRODUCT((WEEKDAY(A2:A8, 2) > 5) * C2:C8)=SUMPRODUCT((WEEKDAY(A2:A8; 2) > 5) * C2:C8)
320 Dec 202525-0772€6,300.00€ 6.300,00
421 Dec 202525-0773€2,750.00€ 2.750,00
522 Dec 202525-0774€21,900.00€ 21.900,00
627 Dec 202525-0779€9,600.00€ 9.600,00
728 Dec 202525-0780€1,450.00€ 1.450,00
831 Dec 202525-0785€15,200.00€ 15.200,00
9
Formula cell (E2)Input

Formula in E2

=SUMPRODUCT((WEEKDAY(A2:A8, 2) > 5) * C2:C8)
=SUMPRODUCT((WEEKDAY(A2:A8; 2) > 5) * C2:C8)

Result: €20,100.00€ 20.100,00

Step by step
  1. Excel evaluates WEEKDAY on the whole range A2:A8 and gets one number per date: {5; 6; 7; 1; 6; 7; 3}. Dec 19 is a Friday (5), Dec 20 a Saturday (6), Dec 21 a Sunday (7), Dec 22 a Monday (1), and so on.
  2. The comparison > 5 turns that into {FALSE; TRUE; TRUE; FALSE; TRUE; TRUE; FALSE}: four weekend entries.
  3. Multiplying by C2:C8 turns TRUE into 1 and FALSE into 0: {0; 6300; 2750; 0; 9600; 1450; 0}.
  4. SUMPRODUCT adds the results: 6,3006.300 + 2,7502.750 + 9,6009.600 + 1,4501.450 = 20,10020.100.
  5. Change the date in A5 to 27 Dec 2025, a Saturday, and the 21,90021.900 entry joins the weekend: the total becomes 42,00042.000.

Watch out: Leave out the 2 and the test > 5 picks Fridays and Saturdays: 18,45018.450 + 6,3006.300 + 9,6009.600 = 34,35034.350. That total looks plausible and is wrong.

More on this example: why it works, 1 more pitfall, 2 variations

Why it works

WEEKDAY accepts a range and returns an array, one day number per row, and the comparison turns that into a mask of TRUE and FALSE. Multiplying the mask by the amounts keeps only the weekend amounts, and SUMPRODUCT adds them. SUMIFS cannot do this directly, because its criteria test the cell values themselves, not a function of them.

More to watch out for

  • A journal line without a date counts as a Saturday and its amount is added to the weekend total without any warning.

Variations

=SUM(FILTER(C2:C8, WEEKDAY(A2:A8, 2) > 5))
=SUM(FILTER(C2:C8; WEEKDAY(A2:A8; 2) > 5))

The same 20,10020.100 with FILTER: clearer to read, and you can drop the SUM to see which amounts were picked. Needs Excel 2021 or Microsoft 365.

=SUMPRODUCT(--(WEEKDAY(A2:A8, 2) > 5))
=SUMPRODUCT(--(WEEKDAY(A2:A8; 2) > 5))

Counts the weekend entries instead of adding them: 4. The double minus turns TRUE and FALSE into 1 and 0.

MasterExcel 2021 or later (This example needs Excel 2021 or later)

Next payment run when the client pays on Tuesday and Friday

For the search for unrecorded liabilities you need to know when each approved purchase invoice was paid. The client has a payment run only on Tuesdays and Fridays, and an invoice never goes in the run of the day it is approved. For every invoice, the sheet must show the next payment run date, so you can see which payments fall after year end 31 December 2025.

Invoice INK-4472 was approved on Wednesday 31 Dec 2025, so it goes in the Friday run.

Sheet excerpt: D3 holds the formula
RowABCDE
1Invoice no.Approved onSupplierPayment run
2INK-447129 Dec 2025Hoekstra Staalhandel
3INK-447231 Dec 2025Van Dijk Logistiek2 Jan 20262 Jan 2026=LET( approved, B3, dayNum, WEEKDAY(approved, 2), daysToAdd, CHOOSE(dayNum, 1, 3, 2, 1, 4, 3, 2), approved + daysToAdd )=LET( approved; B3; dayNum; WEEKDAY(approved; 2); daysToAdd; CHOOSE(dayNum; 1; 3; 2; 1; 4; 3; 2); approved + daysToAdd )
4INK-447326 Dec 2025Bosman Kantoorbehoeften
5INK-447428 Dec 2025Peters Schoonmaak
6INK-447530 Dec 2025De Boer Techniek
7
Formula cell (D3)Input

Formula in D3

=LET(
  approved, B3,
  dayNum, WEEKDAY(approved, 2),
  daysToAdd, CHOOSE(dayNum, 1, 3, 2, 1, 4, 3, 2),
  approved + daysToAdd
)
=LET(
  approved; B3;
  dayNum; WEEKDAY(approved; 2);
  daysToAdd; CHOOSE(dayNum; 1; 3; 2; 1; 4; 3; 2);
  approved + daysToAdd
)

Result: 2 Jan 2026

Step by step
  1. LET sets approved to B3: Wednesday 31 Dec 2025, serial number 46022.
  2. dayNum is WEEKDAY(approved, 2). Wednesday with Monday as 1 is 3.
  3. CHOOSE picks the third value from its list 1, 3, 2, 1, 4, 3, 2. Each position is the gap to the next Tuesday or Friday for that weekday: Monday to Tuesday is 1, Tuesday to Friday is 3, and Wednesday to Friday is 2. daysToAdd is 2.
  4. The last argument adds the two: 46022 + 2 = 46024, which is Friday 2 Jan 2026. The payment falls after year end, so the liability must be on the balance sheet at 31 December 2025.
  5. Copied to the other rows:

    • Monday Dec 29 gets +1, Tuesday Dec 30
    • Friday Dec 26 is 5, so +4, Tuesday Dec 30
    • Sunday Dec 28 is 7, so +2, Tuesday Dec 30
    • Tuesday Dec 30 is 2, so +3, Friday 2 Jan 2026

Watch out: The mirror-image mistake: WEEKDAY(approved) without the 2 makes Wednesday 4, CHOOSE picks 1, and the result is Thursday 1 Jan 2026. It is a real date one day off, and nothing flags it.

More on this example: why it works, 1 more pitfall, 2 variations

Why it works

WEEKDAY turns the date into a position in the week, and CHOOSE turns that position into a number of days, so the payment schedule lives in one short list you can read and check day by day. LET names the steps so the next person sees what each number means.

Do not use this construction when payments also skip public holidays or when the schedule changes often: WORKDAY.INTL(B3, 1, "1011011", holidays) treats every day without a payment run as a weekend day and skips holidays too. The trade-off is that the seven-character mask (Monday first, 1 = no payment run) is harder to read than the CHOOSE list.

More to watch out for

  • A blank approval date is read as serial number 0, a Saturday, and returns a payment date in January 1900. Test for a blank date before the LET if rows can be empty.

Variations

=B3 + CHOOSE(WEEKDAY(B3, 12), 3, 2, 1, 4, 3, 2, 1)
=B3 + CHOOSE(WEEKDAY(B3; 12); 3; 2; 1; 4; 3; 2; 1)

return_type 12 starts the week on Tuesday, the first payment day, so the list reads from run day to run day: Tuesday +3, Wednesday +2, Thursday +1, Friday +4. Same results, a code few people know.

=WORKDAY.INTL(B3, 1, "1011011")
=WORKDAY.INTL(B3; 1; "1011011")

The mask marks Monday, Wednesday, Thursday, Saturday and Sunday as days without a payment run, so one working day later is the next Tuesday or Friday: also 2 Jan 2026. Add a holiday range as a fourth argument.

Common mistakes

Common mistakes
SymptomCauseFix
Fridays flagged as weekend, Sundays missedTesting WEEKDAY(A2) > 5 for weekends: Fridays are flagged and Sundays are not.Use WEEKDAY(A2, 2) > 5. With return_type 2, Saturday is 6 and Sunday is 7.
Blank dates counted as SaturdaysBlank date cells show up as Saturdays in weekend counts.Test for blanks first, or clean the column, before you rely on WEEKDAY.
A 2 where you wanted 'Monday'Expecting WEEKDAY to return 'Monday' and getting 2.Wrap it in CHOOSE with seven names, or use TEXT(date, "dddd") for the name in the Excel language.

Used in combinations