Excel & IT Info

아이엑셀러 닷컴, 엑셀러TV

Excel

Excel의 REDUCE 함수는 훌륭하지만 이것보다 더 신뢰하는 오래된 함수

권현욱(엑셀러) 2026. 2. 19. 17:00
반응형

들어가기 전에

Microsoft는 고급 배열 조작을 위한 정교한 Excel 함수를 계속 추가하고 있습니다. 예를 들어 REDUCE 함수가 그 한 가지 예입니다. REDUCE는 LAMBDA 함수와 함께 사용하면 여러 값을 하나의 누적 결과로 압축해 주므로 마치 공상과학 소설처럼 느껴집니다. 하지만 새로운 REDUCE보다 SUMPRODUCT가 더 나을 수 있으며, 그 이유를 소개합니다.

권현욱(엑셀러) | 아이엑셀러 닷컴 대표 · Microsoft MVP · 엑셀 솔루션 프로바이더 · 작가

 

아이엑셀러


이 글은 아래 기사 내용을 토대로 작성되었습니다만, 필자의 개인 의견이나 추가 자료들이 다수 포함되어 있습니다.

  • 원문: Excel's REDUCE is clever, but this old-school function is what I trust
  • URL: https://www.makeuseof.com/excels-reduce-is-clever-but-i-use-sumproduct/

REDUCE보다 SUMPRODUCT를 선택하는 이유

 

muo

 

REDUCE를 사용하려면 세 가지 필수 매개변수를 갖는 LAMBDA를 정의해야 합니다. 초기값을 제공하여 accumulator의 시작점을 설정할 수도 있습니다. 이러한 모든 구조는 REDUCE에 엄청난 유연성을 제공합니다.

 

예를 들어, 총 비용(원가 곱하기 판매량), 값의 제곱 합(a+b^2), 사용자 정의 함수(예: 50을 초과하는 범위의 값만 더하는 함수)를 생성하거나, 배열 내에서 짝수 값만 세는 등 다양한 용도로 사용할 수 있습니다. REDUCE의 강력한 기능은 부인할 수 없습니다.

=REDUCE(0, SEQUENCE(ROWS(G2:G20)), 
LAMBDA(total, row_num, total + INDEX(G2:G20, row_num) * INDEX(H2:H20, row_num)))

 

하지만 이러한 정교함은 잘못된 LAMBDA나 잘못된 개수의 매개변수를 입력할 경우 Excel에서 가장 골치 아픈 오류 중 하나인 #VALUE! 오류가 발생한다는 것을 의미합니다. 특히 LAMBDA 함수가 설정하기 가장 직관적인 함수는 아니기 때문에 디버깅이 항상 간단한 것은 아닙니다. 반면 SUMPRODUCT는 작성과 문제 해결 모두 훨씬 쉽습니다.

SUMPRODUCT를 사용하여 총 비용을 계산하려는 경우 수식은 훨씬 간단합니다.

=SUMPRODUCT(G2:G20, H2:H20)

 

Excel에서는 첫 번째 배열(원가)의 품목 수와 두 번째 배열(판매 수량)의 해당 품목 수를 곱한 다음 그 결과를 더하여 총합을 구합니다. 이 수식이 무엇을 하는지는 바로 알 수 있지만, REDUCE 함수를 같은 작업에 사용할 때는 항상 그런 것은 아닙니다.

가용성 문제도 있습니다. REDUCE는 Microsoft 365용 Excel, Mac용 Microsoft 365용 Excel, 그리고 웹용 Excel에서만 작동합니다. Excel 2016, 2019, 2021, 심지어 2024를 사용하는 사용자는 이 함수를 사용할 수 없으므로 협업이 필요 이상으로 어려워집니다.

REDUCE가 아무리 똑똑하더라도 여전히 SUMPRODUCT를 사용하는 이유가 바로 이것입니다. 다양한 Excel 버전에서 일관되게 작동하고, 더 중요한 것은 REDUCE가 요구하는 구조적 오버헤드를 피할 수 있다는 것입니다. LAMBDA 함수나 복잡한 매개변수가 필요 없고, 오류가 발생할 가능성도 훨씬 적습니다.

 

REDUCE 대신 SUMPRODUCT를 사용하는 방법

muo

 

물론 SUMPRODUCT는 REDUCE가 할 수 있는 모든 것을 수행할 수는 없습니다. 합계로 끝나는 수치형 배열 연산에만 국한됩니다. 하지만 REDUCE가 처리할 수 있는 모든 계산, 단순 조건부 합계, 다중 조건부 합계, 가중 평균은 SUMPRODUCT가 처리합니다. 적어도 순차 논리가 필요하지 않은 경우에는 그렇습니다.

 

SUMPRODUCT는 하나의 통합 연산(예: 한 배열을 다른 배열에 곱하고 그 결과를 더하는 연산)으로 작동하는 반면, REDUCE는 각 단계를 순차적으로 처리합니다.

 

이러한 단계별 접근 방식은 누적 잔액이나 누적 합계와 같이 B 단계의 값이 A 단계의 결과에 따라 달라지는 계산에 필수적입니다. 따라서 합계 계산에 이러한 종류의 실행 논리가 필요한 경우 SUMPRODUCT는 작동하지 않습니다. 그렇지 않으면 문제없습니다.

SUMPRODUCT는 설계상 해당 범위의 곱의 합을 반환하므로 기본 연산은 다음 구문을 사용하는 곱셈입니다.

=SUMPRODUCT(array1, [array2], ...)

 

하지만 곱셈에만 국한되지는 않습니다. 쉼표를 필요한 산술 연산자(*, /, +, -)로 바꾸면 배열 전체에서 덧셈, 뺄셈, 나눗셈을 수행할 수 있습니다. 여러 지출 항목에 대해 이번 달 예산을 초과하거나 미달하는 총 금액을 구하고 싶다고 가정해 보겠습니다. 다음과 같은 수식을 사용할 수 있습니다.

=SUMPRODUCT((H2:H10 - I2:I10))

 

SUMPRODUCT는 각 항목(B2-C2, B3-C3 등)의 예산 금액에서 실제 지출을 뺀 다음 그 차이를 합산합니다. 결과가 양수이면 전체적으로 예산보다 예산이 적게 책정되었다는 의미입니다. 그렇지 않으면 조정이 필요하다는 것을 의미합니다.

한 걸음 더 나아가, 초과 지출한 총 금액을 확인할 수도 있습니다.

=SUMPRODUCT(--((H2:H10 - I2:I10)

 

이 수식은 두 열(H3~I3의 200과 다른 행의 300, 20, 50) 사이의 음수 차이의 절대값을 합산하여 모든 초과 예산 범주에서 초과 지출한 금액이 570달러라는 것을 결정합니다.

 

muo

 

SUMPRODUCT를 사용하여 여러 기준에 따라 값을 합산합니다. 예를 들어, 중간 크기, 티슈가 아닌 품목과 같이 여러 조건을 충족하는 제품의 총 매출을 계산하거나, 동부 지역에서 판매된 티슈의 수를 세는 데 사용합니다.

=SUMPRODUCT((A2:A10"Tissue Paper")*(C2:C10="Medium")*D2:D10)
=SUMPRODUCT((A2:A10="Tissue Paper")*(B2:B10="East"))

 

복잡한 중첩 IF 문을 작성하는 대신 , SUMPRODUCT를 사용하면 조건을 수식에 직접 추가할 수 있습니다.

 

muo

 

반드시 따라야 할 규칙은 모든 배열의 차원이 동일해야 한다는 것입니다. 그렇지 않으면 SUMPRODUCT는 #VALUE! 오류도 반환합니다. 다행히 이 요구 사항은 예측 가능하고 확인하기 쉽습니다. 다른 함수 내에 내장된 작은 함수를 디버깅하는 것보다 훨씬 쉽습니다.

 

합계로 끝나는 대부분의 스프레드시트 작업, 특히 다른 사람들과 공유해야 하는 작업의 경우, SUMPRODUCT의 직관적인 구조가 REDUCE의 우아함보다 더 중요합니다.

 

마치며

REDUCE는 특히 최신 버전의 Excel만 사용하고 고도로 맞춤화된 배열 로직이 필요한 경우 그 성능에 대해 칭찬받을 만합니다. 그럼에도 불구하고 대부분의 일상 업무와 훨씬 더 다양한 버전의 Excel에서 SUMPRODUCT는 제가 필요로 하는 안정적이고 예측 가능한 결과를 제공합니다. 그리고 이러한 안정성 덕분에 SUMPRODUCT를 계속 신뢰합니다.