Cellwise Start free

Excel guide · 4 min read

How to sum by day of the week in Excel

Quick answerUse =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.

ABCDEFG
1DateSalesDayDayNo.Total
2Nov 2, 2026412MonMon11186
3Nov 3, 2026285TueTue2587
4Nov 4, 2026310WedWed3310
5Nov 5, 2026355ThuThu4699
6Nov 6, 2026520FriFri51008
7Nov 7, 2026640SatSat61375
8Nov 9, 2026398MonSun7260
9Nov 10, 2026302Tue
10Nov 12, 2026344Thu
11Nov 13, 2026488Fri
12Nov 14, 2026590Sat
13Nov 14, 2026145Sat
14Nov 15, 2026260Sun
15Nov 16, 2026376Mon

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.

=SUMPRODUCT((WEEKDAY(A2:A15,2)=6)*B2:B15)

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.

  1. Add the Day column with =TEXT(A2,"ddd") and fill it down.
  2. Click in the data and choose Insert > PivotTable > OK.
  3. Drag Day to Rows and Sales to Values.
  4. 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.

=SUMIF(C2:C15,"Sat",B2:B15)/NETWORKDAYS.INTL(MIN(A2:A15),MAX(A2:A15),"1111101")

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.

=SUMPRODUCT((WEEKDAY(A2:A15,2)>5)*B2:B15)/SUM(B2:B15)

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.

=SUMIFS(B2:B15,C2:C15,"Sat",A2:A15,">="&DATE(2026,11,9))

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

Related guides

Updated