Menu

엑셀 SUMPRODUCT 함수 사용법: 곱해서 더하기, 조건부 합계

=SUMPRODUCT(B2:B6,C2:C6)은 각 수량에 가격을 곱한 뒤 결과를 더합니다. (A2:A7="North")*C2:C7 같은 조건을 쓰면 SUMIFS로 안 되는 월별, 열과 열 비교, OR 조건의 합계와 개수도 구합니다.

이 페이지의 모든 시트는 실제로 동작합니다. 숫자나 수식을 바꾸면 다시 계산됩니다.

=SUMPRODUCT(B2:B6,C2:C6)는 B열의 각 수량에 C열의 옆 가격을 곱한 뒤 그 결과를 더합니다. 행별 합계 열 없이 셀 하나에서 주문 합계를 구합니다.

주문 합계
F2
ABCDEF
1ItemQtyPriceLine totalTotal
2Pen4$1.50$6.00$30.70
3Notebook2$3.25$6.50$30.70
4Folder5$0.80$4.00
5Stapler1$7.90$7.90
6Marker3$2.10$6.30
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

F2와 F3은 같은 $30.70을 보여 줍니다. D열의 행별 합계는 SUMPRODUCT가 하는 일을 보여 주려고 넣은 것입니다. 4 × 1.50, 2 × 3.25 하는 식으로 곱한 뒤 SUM합니다. 수량을 바꾸면 두 합계가 모두 따라 바뀝니다.

SUMPRODUCT 구문

=SUMPRODUCT(array1, [array2], [array3], ...)
  • 각 배열은 범위이거나 범위를 만들어 내는 계산이며, 모두 크기가 같아야 합니다. 다르면 SUMPRODUCT는 #VALUE!를 반환합니다.
  • 배열이 둘 이상이면 같은 위치의 값끼리 곱한 뒤 그 곱을 더합니다.
  • 배열이 하나면 그냥 더하기만 합니다. 아래의 조건 형태가 동작하는 이유가 이것입니다. =SUMPRODUCT((A2:A7="North")*C2:C7)에는 이미 곱해진 배열이 하나 있습니다.
  • 별도의 인수로 넘긴 텍스트는 0으로 셉니다. * 계산 안의 텍스트는 #VALUE!를 일으킵니다.

SUMPRODUCT는 모든 엑셀 버전에서 Ctrl+Shift+Enter(Mac에서는 Cmd+Shift+Enter) 없이 배열을 다룹니다. 그래서 SUMIFS가 나오기 전에는 조건부 합계의 표준 도구였고, 지금도 SUMIFS로 처리할 수 없는 경우에 쓰입니다.

조건을 쓰는 SUMPRODUCT

범위에 대한 비교식 A2:A7="North"는 행마다 TRUE나 FALSE를 하나씩 반환합니다. 이것을 곱하면 TRUE인 행은 남고(×1) 나머지는 0이 됩니다(×0). AND가 필요하면 비교식 두 개를 곱하세요.

조건으로 합계와 개수 구하기
F2
ABCDEF
1RegionProductSalesFormulaResult
2NorthApple120North sales230
3SouthPear45North Apple sales150
4NorthPear80Count North3
5EastApple55Count over 504
6SouthApple200Without --0
7NorthApple30
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

F2는 North 행 세 개를 더해 230을 냅니다. F3은 조건 두 개를 곱하므로 둘 다 참인 행만 셉니다: 150. 더하지 않고 세려면 값을 빼고 --(빼기 기호 두 개)로 TRUE/FALSE를 숫자로 바꿉니다. F4는 North 행 3개를 셉니다. F6은 --가 왜 중요한지 보여 줍니다. SUMPRODUCT는 TRUE 값을 더하지 않으므로 --가 없는 수식은 0을 반환합니다.

처음 네 개는 SUMIF, SUMIFS, COUNTIF와 같은 결과를 냅니다. SUMPRODUCT가 진가를 발휘하는 것은 다음 섹션입니다.

SUMIFS로 표현할 수 없는 조건

SUMIFS는 열을 고정된 조건과 비교합니다. 날짜의 월을 꺼내거나, 두 열을 서로 비교하거나, 더하기 전에 수량에 가격을 곱할 수는 없습니다. SUMPRODUCT는 각 조건이 평범한 계산이므로 이 모든 것을 할 수 있습니다.

SUMIFS를 넘어서
G2
ABCDEFG
1RegionDateTargetActualFormulaResult
2North2026-01-05100120February sales135
3South2026-01-126045Rows over target3
4North2026-02-039080North or East sales285
5East2026-02-185055Above target by75
6South2026-03-02150200
7North2026-03-204030
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.
  • G2는 모든 날짜의 MONTH를 구해 2월 행만 남깁니다: 80 + 55 = 135. 이 수식은 모든 연도의 2월을 더합니다. 한 해만 원하면 *(YEAR(B2:B7)=2026)을 덧붙이세요.
  • G3은 두 열을 행 단위로 비교해 Actual이 Target을 넘은 행을 셉니다.
  • G4는 OR입니다. 두 조건을 더하면 하나라도 참일 때 1이 됩니다(둘 다 참이면 2가 되므로 >0이 있습니다). North 또는 East: 285.
  • G5는 목표를 넘은 행에 대해서만 목표를 얼마나 넘었는지 더합니다.

가중 합계와 가중 평균을 구하는 SUMPRODUCT

수량 곱하기 가격은 가중 합계이며, 여기에 조건을 더할 수 있습니다. 같은 계산을 가중치의 합으로 나누면 가중 평균이 됩니다. =SUMPRODUCT(B2:B6,C2:C6)/SUM(B2:B6)는 판매된 품목당 평균 가격입니다.

지역별 매출액
G2
ABCDEFG
1RegionProductQtyPriceFormulaResult
2NorthApple10$1.20North revenue$31.00
3SouthPear4$1.50All revenue$61.00
4NorthPear6$1.50Average price per item$1.36
5EastApple8$1.20
6SouthApple12$1.20
7NorthPlum5$2.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

North는 사과 10개를 $1.20에, 배 6개를 $1.50에, 자두 5개를 $2.00에 팔았으므로 G2는 $31.00을 보여 줍니다. 가격의 단순 평균은 자두가 사과만큼 자주 팔린 것처럼 취급합니다. G4는 각 가격에 수량만큼 가중치를 둡니다.

연습: 조건을 건 매출액

직접 해 보기: South 매출액
G2
ABCDEFG
1RegionProductQtyPriceFormulaResult
2NorthApple10$1.20South revenue
3SouthPear4$1.50
4NorthPear6$1.50
5EastApple8$1.20
6SouthApple12$1.20
7NorthPlum5$2.00
셀을 클릭하면 수식이 보입니다. 숫자나 수식을 바꾸면 시트가 다시 계산됩니다.

직접 해 보세요: South 매출액을 구하세요. South 행에 대해서만 수량에 가격을 곱합니다. 수식은 G2에 쓰세요.

SUMPRODUCT와 SUMIFS 비교, 그리고 두 가지 오류

조건SUMIFSSUMPRODUCT
열이 어떤 값과 같음=SUMIFS(C2:C7,A2:A7,"North")=SUMPRODUCT((A2:A7="North")*C2:C7)
텍스트 포함=SUMIFS(C2:C7,B2:B7,"*app*")=SUMPRODUCT(ISNUMBER(SEARCH("app",B2:B7))*C2:C7)
날짜의 월직접은 불가능=SUMPRODUCT((MONTH(B2:B7)=2)*D2:D7)
열과 열 비교불가능=SUMPRODUCT(--(D2:D7>C2:C7))
수량 × 가격불가능=SUMPRODUCT(C2:C7,D2:D7)

SUMIFS로 할 수 있는 일이면 SUMIFS를 쓰세요. 읽기 쉽고, 행이 수만 개일 때 더 빠르며, 열 전체를 받을 수 있습니다. =SUMPRODUCT((A:A="North")*C:C)는 백만 개가 넘는 행을 곱하다가 C1의 머리글 텍스트에 닿는 순간 #VALUE!를 반환하므로, SUMPRODUCT에는 A2:A500처럼 정확한 범위를 주세요.

자주 만나는 오류 두 가지:

  • 크기가 다른 범위로 인한 #VALUE!. =SUMPRODUCT(B2:B6,C2:C7)는 실패합니다. 모든 범위가 같은 행을 덮어야 합니다.
  • 곱하는 범위의 텍스트로 인한 #VALUE!. C2:C7 안에 머리글이나 "n/a"가 있으면 텍스트는 곱할 수 없으므로 (A2:A7="North")*C2:C7이 깨집니다. 범위를 머리글 아래부터 시작하거나, 값을 별도의 인수로 넘기세요. =SUMPRODUCT(--(A2:A7="North"),C2:C7)는 C열의 텍스트를 0으로 취급합니다.

자주 묻는 질문

엑셀에서 SUMPRODUCT는 무엇을 하나요?

범위를 행 단위로 곱하고 그 곱을 더합니다. =SUMPRODUCT(B2:B6,C2:C6)는 B2C2 + B3C3 + ... + B6*C6이며, 예를 들어 수량 곱하기 가격을 더해 주문 합계를 구합니다.

SUMPRODUCT에 조건을 쓰려면 어떻게 하나요?

비교식을 곱합니다. =SUMPRODUCT((A2:A7="North")*C2:C7)는 North 행의 C2:C7을 더합니다. 비교식은 TRUE나 FALSE를 내고, 곱하면 1이나 0이 됩니다.

SUMPRODUCT에서 --는 무슨 뜻인가요?

빼기 기호 두 개로, TRUE와 FALSE를 1과 0으로 바꿉니다. =SUMPRODUCT(--(C2:C7>50))는 50보다 큰 값을 셉니다. 이것이 없으면 SUMPRODUCT는 TRUE/FALSE를 0으로 취급해 0을 반환합니다.

SUMPRODUCT와 SUMIFS 중 무엇을 써야 하나요?

SUMIFS의 조건으로 표현할 수 있으면 SUMIFS를 쓰세요. 읽기 쉽고 큰 범위에서 더 빠릅니다. 날짜의 월, 한 열과 다른 열의 비교, 수량 곱하기 가격처럼 조건에 계산이 필요하면 SUMPRODUCT를 쓰세요.

SUMPRODUCT가 #VALUE!를 반환하는 이유는 무엇인가요?

범위의 크기가 다르거나(B2:B6과 C2:C7), *로 곱하는 범위에 텍스트가 있기 때문입니다. 모든 범위의 크기를 같게 하고, 텍스트가 있는 범위는 별도의 인수로 넘기세요. 그러면 텍스트를 0으로 취급합니다.

Coddy 프로그래밍 언어 일러스트

Coddy로 코딩 배우기

시작하기