Excel guide · 4 min read
How to sum by day of the week in Excel
=SUMPRODUCT((WEEKDAY(A2:A15,2)=6)*B2:B15) to total every Saturday, where WEEKDAY with return type 2 numbers Monday 1 to Sunday 7. For a Mon-Sun table, put 1 to 7 in a column and point the formula at it, or add a helper column =TEXT(A2,"ddd") and use SUMIF.Sample data
Every result on this page was calculated from this sheet by the same spreadsheet engine the Cellwise app uses.
| A | B | C | D | E | F | G | |
|---|---|---|---|---|---|---|---|
| 1 | Date | Sales | Day | Day | No. | Total | |
| 2 | Nov 2, 2026 | 412 | Mon | Mon | 1 | 1186 | |
| 3 | Nov 3, 2026 | 285 | Tue | Tue | 2 | 587 | |
| 4 | Nov 4, 2026 | 310 | Wed | Wed | 3 | 310 | |
| 5 | Nov 5, 2026 | 355 | Thu | Thu | 4 | 699 | |
| 6 | Nov 6, 2026 | 520 | Fri | Fri | 5 | 1008 | |
| 7 | Nov 7, 2026 | 640 | Sat | Sat | 6 | 1375 | |
| 8 | Nov 9, 2026 | 398 | Mon | Sun | 7 | 260 | |
| 9 | Nov 10, 2026 | 302 | Tue | ||||
| 10 | Nov 12, 2026 | 344 | Thu | ||||
| 11 | Nov 13, 2026 | 488 | Fri | ||||
| 12 | Nov 14, 2026 | 590 | Sat | ||||
| 13 | Nov 14, 2026 | 145 | Sat | ||||
| 14 | Nov 15, 2026 | 260 | Sun | ||||
| 15 | Nov 16, 2026 | 376 | Mon |
Download this sheet as an Excel practice file (.xlsx)
SUMPRODUCT and WEEKDAY, no helper column
You run a coffee cart, a market stall or a small shop, and the question you keep coming back to is "which days are actually worth opening?". The sheet logs two weeks of takings, one row per sale session, with dates in column A and amounts in column B.
WEEKDAY(A2:A15,2) turns each date into a day number, Monday 1 to Sunday 7. Comparing that to 6 gives TRUE for the Saturday rows, and multiplying by B2:B15 keeps only their amounts. SUMIFS can't do this on its own, because its criteria test the cell value, and the cell holds a date, not a day name.
For the full table, the day numbers sit in F2:F8 and G2 holds =SUMPRODUCT((WEEKDAY($A$2:$A$15,2)=F2)*$B$2:$B$15), filled down. The totals come out at Mon 1,186, Tue 587, Wed 310, Thu 699, Fri 1,008, Sat 1,375 and Sun 260, which add up to the 5,425 in column B.
Result: 1375
1375: the three Saturday rows, 640 + 590 + 145.
A helper column with SUMIF (and PivotTables)
If you'd rather see the day on every row, add =TEXT(A2,"ddd") in column C and fill it down. Then =SUMIF(C2:C15,"Sat",B2:B15) gives the same 1,375, and in Excel 365 =SUMIF(C2:C15,E2:E8,B2:B15) spills all seven totals next to the Mon-Sun labels in E2:E8.
Don't point SUMIF at the date column with "Sat": =SUMIF(A2:A15,"Sat",B2:B15) returns 0, because no cell contains the text Sat. Also note that TEXT's day names and format codes follow the language Excel runs in, so on a computer set to another language a "Sat" criterion can find nothing. The WEEKDAY number version works in any language.
The helper column is also the only way to get weekdays into a PivotTable. PivotTables group dates by anything from seconds to years, but not by weekday.
- Add the Day column with
=TEXT(A2,"ddd")and fill it down. - Click in the data and choose Insert > PivotTable > OK.
- Drag Day to Rows and Sales to Values.
- Excel sorts the days Sun to Sat using its built-in custom lists, not A to Z. To start on Monday, drag the Mon row to the top.
Average per weekday: per row, per open day, or per calendar day
This is where most weekday reports go wrong. =AVERAGEIF(C2:C15,"Sat",B2:B15) returns 458.33, but that's the average per row. Saturday 14 November has two rows (a morning market and an evening pop-up), so the average is split three ways when there were only two Saturdays.
Divide the total by the number of Saturdays instead. =NETWORKDAYS.INTL(MIN(A2:A15),MAX(A2:A15),"1111101") counts the Saturdays in the period, 2, so the real figure is 687.50 per Saturday. If you only want days you were open, count distinct dates: =COUNT(UNIQUE(FILTER(A2:A15,WEEKDAY(A2:A15,2)=6))) is also 2 here.
The two divisors differ when you had closed days. The cart was shut on Wednesday 11 November, so Wednesday averages 310 per day it opened but 155 per calendar Wednesday. Sunday is 260 vs 130. Use "per open day" to judge how good a day is, and "per calendar day" to judge what closing costs you.
Result: 687.5
687.5 per Saturday, not the 458.33 per row that AVERAGEIF gives.
Busiest day and weekend share
With the totals in G2:G8, =XLOOKUP(MAX(G2:G8),G2:G8,E2:E8) names the best day: Sat. =SORTBY(E2:E8,G2:G8,-1) ranks all seven: Sat, Mon, Fri, Thu, Tue, Wed, Sun. Mondays at number two is the kind of surprise that's worth a second look before you change your hours.
To compare weekends with weekdays, test >5 and <6: =SUMPRODUCT((WEEKDAY(A2:A15,2)>5)*B2:B15) returns 1,635 and the <6 version returns 3,790. Divide the weekend figure by the total for its share.
Result: 0.30138248848 shows as 30% with Percent format
0.301, which is 30% of takings from Saturdays and Sundays.
Add a date range or another condition
Each extra condition is one more bracket multiplied in. Saturdays from 9 November onward: =SUMPRODUCT((WEEKDAY(A2:A15,2)=6)*(A2:A15>=DATE(2026,11,9))*B2:B15) returns 735. With the helper column, SUMIFS reads more easily: =SUMIFS(B2:B15,C2:C15,"Sat",A2:A15,">="&DATE(2026,11,9)) gives the same 735.
Keep your ranges exactly the size of the data. A blank date counts as a Saturday in WEEKDAY, so =SUMPRODUCT(--(WEEKDAY(A2:A16,2)=6)), with the empty row 16 included, counts 4 Saturday rows instead of 3. The sum is unaffected because the blank row has no amount, but counts and averages go wrong. Turning the data into a table (Ctrl+T) keeps ranges the right size as you add rows.
Result: 735
735: the two Saturday sessions on 14 November, 590 + 145.
Common mistakes
Mixing WEEKDAY numberings
Without the 2, WEEKDAY numbers Sunday 1, so =1 picks Sundays (260), not Mondays. Use return type 2 everywhere and label your 1-7 column Mon-Sun.
Averaging per row with AVERAGEIF
Days with several rows or closed days skew it. Divide the weekday total by the number of those weekdays instead.
SUMIF on the date column with "Mon"
Dates are numbers, so a day-name criterion returns 0. Use WEEKDAY in SUMPRODUCT or a TEXT helper column.
Ranges that include blank rows
A blank date is treated as a Saturday. Size the ranges to the data or use a table.
FAQ
How do I sum values by day of the week in Excel?
Use =SUMPRODUCT((WEEKDAY(dates,2)=1)*amounts) for Mondays, changing 1 to 7 for the other days, or add a helper column with =TEXT(date,"ddd") and use SUMIF.
How do I calculate the average sales for each day of the week?
Divide each weekday's total by the number of those weekdays in the period, using NETWORKDAYS.INTL with a mask like "0111111" for Mondays. AVERAGEIF averages rows, which is only right when there is exactly one row per day.
Can a PivotTable group dates by day of the week?
Not directly. Add a column with =TEXT(A2,"ddd") or =WEEKDAY(A2,2) and use it as the row field.
How do I sum only weekdays or only weekends?
Use =SUMPRODUCT((WEEKDAY(dates,2)<6)*amounts) for Monday to Friday and >5 instead of <6 for Saturday and Sunday.
Functions used
SUMPRODUCTMultiply then addWEEKDAYDay of the week as a numberTEXTNumber to formatted textSUMIFAdds cells that matchSUMIFSAdds with several conditionsAVERAGEIFAverages cells that matchNETWORKDAYS.INTLWeekdays between dates, custom weekendMINSmallest numberMAXLargest numberCOUNTCounts numbersUNIQUERemoves duplicates, spillsFILTERKeeps matching rows, spillsXLOOKUPModern lookup in any directionSORTBYSorts by other columns, spillsSUMAdds numbersDATEBuilds a date
Related guides
- How to sum by week in Excel
- How to sum by month in Excel
- SUMPRODUCT vs SUMIFS: which should you use?
- How to get the day of the week from a date in Excel
- How to count a specific weekday between two dates in Excel
- How to find missing numbers in a sequence in Excel
- How to calculate hours per week from a timesheet in Excel
Updated