In Excel: use =WEEKDAY(date, 2) — it returns the day of the week as a number, where return_type 2 numbers Monday as 1 through Sunday as 7.
Syntax
Arguments
| Argument | Description | |
|---|---|---|
serial_number | required | The date to evaluate, as a cell reference, a date, or a serial number. |
return_type | optional | Controls the numbering: 1 (or omitted) = Sunday(1) to Saturday(7); 2 = Monday(1) to Sunday(7); 3 = Monday(0) to Sunday(6). |
Related functions
2026-W25 · WEEKNUM (Sunday start): 25
Day of year: 166
What this does
WEEKDAY takes a date and returns which day of the week it falls on, as a NUMBER from 1 to 7 rather than a name. The optional return_type decides where the week starts: the default 1 runs Sunday(1) to Saturday(7), while 2 — the common ISO choice — runs Monday(1) to Sunday(7), and 3 runs Monday(0) to Sunday(6). Because it gives a number, WEEKDAY is built for logic: flagging weekends, filtering by day, or feeding an IF. If you want the day NAME instead, use TEXT(date, "dddd") rather than WEEKDAY. The same idea underpins a lot of everyday Excel work, so the few minutes spent getting it right here pay back across every sheet you build afterwards. Treat it as a pattern, not a one-off, and it stops being something you look up and starts being something you reach for. Treat “excel formula for day of week based on date” as a small repeatable workflow rather than a one-off click you hope to remember next time. Use a small test block before the live file, so any surprise in the affected formula shows up while it is still harmless. When a formula is involved, keep the inputs labelled beside it, reference cells instead of typing values, and apply number formatting only after the result checks out. That turns a workflow that saves repeating the same clicks every week into a method you can reuse, explain, and defend when the workbook leaves your screen.
A worked example
Cell A2 holds the date 2026-06-03 (a Wednesday). =WEEKDAY(A2, 2) returns 3, because with return_type 2 Monday is 1, Tuesday 2 and Wednesday 3. With the default, =WEEKDAY(A2) returns 4, since Sunday is 1 there. To flag weekends regardless of locale: =IF(WEEKDAY(A2, 2) > 5, "Weekend", "Weekday"). For the day name itself, =TEXT(A2, "dddd") returns "Wednesday". WEEKDAY is the building block for any logic that depends on the day of the week — weekend flags, shift schedules and day-based filters — because a plain number is easy to compare and feed into other formulas. One habit worth forming early: name the cells that hold your inputs, so the formula reads in plain language instead of a string of cell addresses. A reviewer — or you in three months — can then follow the logic without decoding what B7 and D2 were supposed to mean, which is most of what makes a sheet maintainable.
In Google Sheets
Google Sheets handles this almost identically to Excel. The formula syntax above is the same, and the menu lives under a slightly different label rather than a ribbon tab. Use the platform toggle at the top of the page to switch every keyboard shortcut between Windows and Mac, and expect at most cosmetic differences in naming. Keep this page bookmarked for the next time the same question comes up. Better still, rebuild the example once in your own sheet — doing it yourself, with the tool above to check against, is what turns a copied formula into a technique you own. Treat “excel formula for day of week based on date” as a small building block rather than a chore. Once the inputs sit in their own cells and the formula reads from them, the same setup answers a dozen related questions with a tweak, and Excel keeps every dependent figure current as the data changes. The tool above is there so you can rehearse and verify before committing anything to a real workbook; the steps and worked example are there so the logic sticks. Get it right once and it stops costing you time — it starts saving it, every time the question comes back around.
Common mistakes
- Expecting a day name —
WEEKDAYreturns a number; use TEXT(date, "dddd") when you want the word. - Forgetting the return_type and assuming Monday is 1 — with the default, Sunday is 1 and Monday is 2, which shifts every weekend test.
- Pointing
WEEKDAYat text that looks like a date but is not a real date value, which gives a#VALUE!error; convert it withDATEVALUEfirst.
Frequently asked questions
How do I make Monday equal 1?
Pass 2 as the second argument: =WEEKDAY(A2, 2) numbers Monday as 1 through Sunday as 7. Without it, the default return_type 1 makes Sunday 1 and Saturday 7.
How do I get the name of the day, not a number?
Use TEXT instead of WEEKDAY: =TEXT(A2, "dddd") returns the full day name such as "Wednesday", and "ddd" returns the short form "Wed".
How do I flag weekends with WEEKDAY?
Use return_type 2 and test for 6 or 7: =IF(WEEKDAY(A2, 2) > 5, "Weekend", "Weekday"). Because Saturday is 6 and Sunday is 7, anything above 5 is a weekend day.