Cellwise Start free

Excel guide · 5 min read

SUMPRODUCT vs SUMIFS: which should you use?

Quick answerBoth can add up values that meet conditions: =SUMIFS(F2:F11,B2:B11,"North") and =SUMPRODUCT((B2:B11="North")*F2:F11) both return 11,720. Use SUMIFS for plain conditions on columns (it is simpler and usually faster). Use SUMPRODUCT when the condition needs a calculation on each row, like MONTH or WEEKDAY, OR logic across different columns, or a case-sensitive match.

Sample data

Every result on this page was calculated from this sheet by the same spreadsheet engine the Cellwise app uses.

ABCDEF
1DateRegionRepProductUnitsRevenue
2Oct 3, 2026NorthAnaLaptop45200
3Oct 11, 2026EastBenMonitor122160
4Oct 19, 2026NorthDanaDock91080
5Oct 27, 2026WestAnaMonitor61080
6Nov 2, 2026EastBenLaptop22600
7Nov 5, 2026NorthAnaMonitor152700
8Nov 9, 2026EastCalDock101200
9Nov 14, 2026WestDanaLaptop33900
10Nov 20, 2026NorthCalMonitor81440
11Nov 18, 2025NorthBenLaptop11300

Download this sheet as an Excel practice file (.xlsx)

The same total, written both ways

The sheet is a small sales log: date, region, rep, product, units and revenue. Total revenue for North is 11,720 with either function. SUMIFS takes the sum range first, then pairs of "range, criteria". SUMPRODUCT turns each test into TRUE or FALSE per row, and multiplying by the revenue column turns those into 1 and 0, so only matching rows are left in the sum.

More conditions work the same way. North laptops: =SUMIFS(F2:F11,B2:B11,"North",D2:D11,"Laptop") adds two more arguments, and =SUMPRODUCT((B2:B11="North")*(D2:D11="Laptop")*F2:F11) multiplies one more test. Both return 6,500. For AND conditions like these, the SUMIFS version is easier to read and to hand to a colleague.

=SUMIFS(F2:F11,B2:B11,"North")

Result: 11720

11,720. =SUMPRODUCT((B2:B11="North")*F2:F11) returns the same.

Dates: a date range in SUMIFS, MONTH in SUMPRODUCT

SUMIFS can only test the cells themselves, so a month is written as a date range: =SUMIFS(F2:F11,B2:B11,"North",A2:A11,">="&DATE(2026,11,1),A2:A11,"<"&DATE(2026,12,1)) gives North's November 2026 revenue, 4,140. You cannot write MONTH(A2:A11) as a criteria range; SUMIFS only accepts real ranges there, and Excel rejects the formula.

SUMPRODUCT can run MONTH on every date, which feels more natural. But =SUMPRODUCT((B2:B11="North")*(MONTH(A2:A11)=11)*F2:F11) returns 5,440, not 4,140. MONTH ignores the year, so Ben's laptop sale from 18 November 2025 (1,300) sneaks in. Add a YEAR test, as below, or stick with the date range, which is exact by design.

=SUMPRODUCT((B2:B11="North")*(MONTH(A2:A11)=11)*(YEAR(A2:A11)=2026)*F2:F11)

Result: 4140

4,140, the same as the SUMIFS date range: Ana's 2,700 and Cal's 1,440.

OR logic: easy in SUMPRODUCT, awkward in SUMIFS

SUMIFS joins its conditions with AND only. For North or West in the same column, add one SUMIFS per value, or pass both values as an array constant and wrap it in SUM: =SUM(SUMIFS(F2:F11,B2:B11,{"North","West"})) returns 16,700. SUMPRODUCT adds the tests instead of multiplying them: =SUMPRODUCT(((B2:B11="North")+(B2:B11="West"))*F2:F11) gives the same 16,700.

OR across two different columns is where SUMPRODUCT clearly wins. North or Laptop: a North laptop row passes both tests, so plain addition gives it a 2 and counts it twice (24,720). Wrapping the sum in >0 turns every match back into a single TRUE. With SUMIFS you would need North plus Laptop minus North-and-Laptop, three SUMIFS, to get the same 18,220.

=SUMPRODUCT(((B2:B11="North")+(D2:D11="Laptop")>0)*F2:F11)

Result: 18220

18,220: every North sale plus the laptops sold in East and West, each row counted once.

Tests SUMIFS cannot do at all

Any condition that needs a function on each row is SUMPRODUCT's job. Weekend sales use WEEKDAY: with return type 2, Saturday is 6 and Sunday is 7, so >5 keeps the weekend. Three rows qualify: Saturday 3 October, Sunday 11 October and Saturday 14 November. The SUMIFS alternative is a helper column with =WEEKDAY(A2,2) that you then test with ">5".

Wildcards go the other way. SUMIFS understands them: =SUMIFS(F2:F11,D2:D11,"*top") returns 13,000 for laptops. SUMPRODUCT compares exactly, so a partial match needs ISNUMBER(SEARCH("top",D2:D11)) instead, which gives the same 13,000.

Neither is case-sensitive by default. =SUMIFS(F2:F11,B2:B11,"north") still returns 11,720, and so does B2:B11="north" inside SUMPRODUCT. Only SUMPRODUCT can be made strict: =SUMPRODUCT(EXACT(B2:B11,"north")*F2:F11) returns 0, because every cell says North with a capital N.

=SUMPRODUCT((WEEKDAY(A2:A11,2)>5)*F2:F11)

Result: 11260

11,260 from weekend sales: 5,200 + 2,160 + 3,900.

Numbers stored as text give different totals

East's Dock sale on 9 November was imported as the text 1200, not a number. SUMIFS skips text in the sum range, so =SUMIFS(F2:F11,B2:B11,"East") returns 4,760. Multiplying with * coerces text that looks like a number, so the SUMPRODUCT version adds the 1,200 and returns 5,960. Two formulas that look equivalent disagree, and neither warns you.

The comma form behaves like SUMIFS: =SUMPRODUCT(--(B2:B11="East"),F2:F11) also returns 4,760, because SUMPRODUCT treats non-numbers in its arguments as 0. And text that is not a number, like n/a, makes the * version fail with #VALUE!.

Do not pick a formula to work around this; fix the data. =COUNTA(F2:F11)-COUNT(F2:F11) returns 1 here: one non-empty cell in the revenue column is not a number. Convert it (the green triangle menu > Convert to Number), and both functions agree on 5,960.

=SUMPRODUCT((B2:B11="East")*F2:F11)

Result: 5960

5,960: the text 1200 is counted. SUMIFS gives 4,760 for the same question.

Side by side, and which to pick

Conditions: SUMIFS tests cell values against fixed criteria, joined with AND. SUMPRODUCT tests anything you can calculate per row (MONTH, WEEKDAY, LEN, units x price) and does OR with +.

Matching: SUMIFS supports wildcards (* and ?) and operators in text, like ">=10". SUMPRODUCT compares exactly unless you add SEARCH, and only SUMPRODUCT can be case-sensitive with EXACT.

Data problems: SUMIFS skips text and handles a header row inside the range. SUMPRODUCT with * coerces text numbers, and a header or n/a cell in a multiplied range returns #VALUE!.

Speed and ranges: SUMIFS is usually faster on large sheets and copes well with whole columns like F:F. SUMPRODUCT calculates every cell you give it, so use exact ranges or a table, never whole columns. SUMIFS also returns #VALUE! when it points at another workbook that is closed; SUMPRODUCT still calculates.

Verdict: start with SUMIFS. It is the clearer formula for the common case of one or more AND conditions on columns. Switch to SUMPRODUCT when you need a calculated condition, OR across columns, case-sensitive matching, or links to closed workbooks. SUMIFS is in Excel 2007 and later; SUMPRODUCT works in every version.

Common mistakes

MONTH without YEAR in SUMPRODUCT

MONTH(A2:A11)=11 matches November of every year. Add (YEAR(A2:A11)=2026), or use a SUMIFS date range from the 1st to the 1st of the next month.

Double counting with OR across columns

(B2:B11="North")+(D2:D11="Laptop") is 2 for a North laptop. Wrap the sum in >0 before multiplying by the values.

Including the header row in SUMPRODUCT

=SUMPRODUCT((B1:B11="North")*F1:F11) returns #VALUE!, because the text Revenue is multiplied. Start the ranges on row 2.

Totals that differ between the two

Usually numbers stored as text: SUMIFS skips them and * counts them. Check with COUNTA minus COUNT and convert the column.

FAQ

Is SUMPRODUCT faster than SUMIFS?

Usually not. SUMIFS is built for conditional sums and is generally the quicker of the two on large data. SUMPRODUCT works through every cell in every range, which is why whole-column references make it slow.

Can SUMIFS do OR conditions?

Within one column, yes: =SUM(SUMIFS(F2:F11,B2:B11,{"North","West"})) adds both regions. Across different columns, you need several SUMIFS and must subtract the overlap, so SUMPRODUCT with ((test1)+(test2)>0) is simpler.

Can I use MONTH inside SUMIFS?

No. SUMIFS needs real ranges as criteria ranges, not calculated arrays. Use a date range instead (">="&DATE(2026,11,1) and "<"&DATE(2026,12,1)), add a helper column with =MONTH(A2), or switch to SUMPRODUCT.

Do I need Ctrl+Shift+Enter for SUMPRODUCT?

No. SUMPRODUCT handles arrays itself in every version of Excel, which is why it was the standard way to sum with calculated conditions before Excel 365.

Why does my SUMPRODUCT return #VALUE!?

A multiplied range contains text that is not a number (often the header row or an n/a), or the ranges in the comma form are different sizes. Start ranges on the first data row and make them all the same height.

Functions used

Related guides

Updated