핵심 요약
- SUMPRODUCT는 같은 위치의 값끼리 곱한 뒤 그 결과를 모두 더합니다.
=SUMPRODUCT(수량범위, 단가범위)한 줄로 총매출이 나옵니다. - 조건부 합계는
=SUMPRODUCT((품목범위="Cookies")*수량범위*단가범위)처럼 조건식을 곱해 만듭니다. 조건이 참이면 1, 거짓이면 0으로 계산됩니다. - 모든 범위는 행·열 크기가 같아야 하며, 크기가 다르면
#VALUE!오류가 납니다.
품목별 판매 수량과 단가가 나란히 있는 표에서 하루 총매출을 구하려면 보통 "수량×단가" 열을 하나 더 만들고 그 열을 SUM으로 더합니다. 표가 작을 때는 괜찮지만 보조 열이 늘어날수록 시트가 복잡해집니다.
SUMPRODUCT 함수를 쓰면 보조 열 없이 곱하기와 더하기를 한 번에 끝낼 수 있습니다. 이 글에서는 SUMPRODUCT의 계산 순서, 실제 표에서 총매출을 구하는 방법, 조건을 걸어 합계와 개수를 구하는 응용, 자주 나는 오류를 정리합니다.
SUMPRODUCT 함수 구조와 계산 순서
=SUMPRODUCT(배열1, 배열2, 배열3, ...)
| 인수 | 뜻 | 예시 |
|---|---|---|
| 배열1 | 곱할 첫 번째 범위 또는 배열(필수) | C3:C5 |
| 배열2, … | 배열1과 같은 크기의 범위 또는 배열(선택) | D3:D5 |
여기서 배열은 {1, 2, 3}처럼 중괄호로 묶은 값 목록이나 C3:C5 같은 셀 범위를 말합니다. 엑셀은 각 배열의 첫 번째 값끼리, 두 번째 값끼리 곱한 다음 그 곱들을 더합니다.
=SUMPRODUCT({1, 2, 3}, {4, 5, 6})
→ (1×4) + (2×5) + (3×6)
→ 4 + 10 + 18 = 32
배열을 세 개 넣으면 같은 위치의 세 값을 곱합니다. =SUMPRODUCT({1,2,3}, {4,5,6}, {0,2,1})은 (1×4×0) + (2×5×2) + (3×6×1) = 0 + 20 + 18 = 38입니다. 배열을 하나만 넣으면 곱할 대상이 없으므로 그 배열의 합계와 같습니다.
수량과 단가로 총매출 한 번에 구하기
아래 표에는 품목(Item), 판매 수량(Units sold), 단가(Price)가 있습니다. F2 셀에 하루 총매출을 넣어 보겠습니다.
- F2 셀을 선택합니다.
=SUMPRODUCT(C3:C5, D3:D5)를 입력하고 Enter를 누릅니다.
계산 과정은 2,948×$1.50 = $4,422, 1,965×$3.00 = $5,895, 435×$10.00 = $4,350이고, 세 값을 더한 $14,667이 결과로 나옵니다. "수량×단가" 보조 열을 만들지 않고도 같은 답을 얻었습니다.
같은 원리로 가중 평균도 구할 수 있습니다. =SUMPRODUCT(값범위, 가중치범위)/SUM(가중치범위)처럼 곱의 합을 가중치 합으로 나누면 됩니다.
조건을 걸어 합계와 개수 구하기
SUMPRODUCT가 실무에서 자주 쓰이는 이유는 조건식을 곱해 넣을 수 있기 때문입니다. B3:B5="Cookies"는 행마다 TRUE 또는 FALSE를 만들고, 이 값에 숫자를 곱하면 TRUE는 1, FALSE는 0으로 계산됩니다.
| 구하려는 값 | 수식 | 결과 |
|---|---|---|
| Cookies 매출만 | =SUMPRODUCT((B3:B5="Cookies")*C3:C5*D3:D5) | $4,422 |
| Cookies 또는 Cakes 매출 | =SUMPRODUCT(((B3:B5="Cookies")+(B3:B5="Cakes"))*C3:C5*D3:D5) | $8,772 |
| 수량 1,000 이상이면서 단가 5달러 미만 매출 | =SUMPRODUCT((C3:C5>=1000)*(D3:D5<5)*C3:C5*D3:D5) | $10,317 |
| 수량 1,000 이상인 품목 수 | =SUMPRODUCT(--(C3:C5>=1000)) | 2 |
정리하면 그리고(AND) 조건은 곱하기(*), 또는(OR) 조건은 더하기(+)로 연결합니다. 마지막 수식의 --는 TRUE/FALSE를 1/0으로 바꾸는 표기입니다.
조건식을 쉼표로 따로 넘기면 결과가 0이 될 수 있습니다. =SUMPRODUCT((B3:B5="Cookies"), C3:C5, D3:D5)는 TRUE/FALSE가 숫자로 바뀌지 않아 0으로 처리되기 때문입니다. 조건식 앞에 --를 붙이거나, 위 표처럼 곱하기로 묶어 쓰세요.
자주 나는 오류와 주의점
- 범위 크기가 다를 때:
=SUMPRODUCT(C3:C5, D3:D6)처럼 행 수가 다르면#VALUE!오류가 납니다. 모든 범위의 시작 행과 끝 행을 맞추세요. - 머리글 텍스트가 섞였을 때: 쉼표로 나열한 방식은 텍스트를 0으로 보고 넘어가지만,
C2:C5*D2:D5처럼 곱하기 방식에 머리글 행을 포함하면 텍스트를 곱하게 되어#VALUE!가 납니다. - 열 전체 참조:
C:C처럼 열 전체를 넣으면 100만 행 이상을 계산하므로 파일이 느려질 수 있습니다. 실제 데이터가 있는 범위만 지정하는 편이 좋습니다. - 대체 함수: 조건이 "같다·크다" 수준이라면 SUMIFS가 더 읽기 쉽습니다. SUMPRODUCT는 OR 조건이나 계산식이 들어간 조건처럼 SUMIFS로 표현하기 어려울 때 특히 유용합니다.
구글 스프레드시트에서는
구글 스프레드시트에도 같은 이름과 인수 구조의 SUMPRODUCT가 있어 =SUMPRODUCT(C3:C5, D3:D5)를 그대로 쓸 수 있습니다. 조건식을 곱해 만드는 조건부 합계도 같은 방식으로 동작합니다. 범위 크기가 서로 다르면 오류가 나는 점도 같으니 범위를 맞춰 입력하세요.
자주 묻는 질문
SUMPRODUCT는 배열 수식이라 Ctrl+Shift+Enter를 눌러야 하나요?
아닙니다. SUMPRODUCT는 원래 배열을 다루는 함수라서 조건식을 곱해 넣은 경우에도 Enter만 누르면 계산됩니다.
SUMPRODUCT와 SUMIFS 중 무엇을 써야 하나요?
단순히 "품목이 Cookies인 수량 합계"처럼 조건에 맞는 한 열을 더할 때는 SUMIFS가 짧고 빠릅니다. 두 열을 곱한 값을 조건부로 더하거나 OR 조건을 섞어야 할 때는 SUMPRODUCT가 편리합니다.
결과가 0으로 나오는데 수식은 맞는 것 같습니다.
조건식을 쉼표로 따로 넘겼는지 확인하세요. TRUE/FALSE 배열은 숫자로 바뀌지 않아 0으로 처리됩니다. 또 수량이나 단가가 텍스트로 저장된 숫자여도 쉼표 방식에서는 0으로 계산됩니다.
함께 보면 좋은 글: 엑셀 SUM 함수와 누적 합계 구하기, 엑셀 수식과 함수 기초 중첩 함수까지
댓글
댓글 남기기