기본 콘텐츠로 건너뛰기

글

라벨이 SUMIFS인 게시물 표시

[엑셀]SUMPRODUCT의 원리 — 배열 곱셈으로 조건을 표현하는 방법 조건을 0/1 배열로 바꿔 곱하는 논리

 재고 담당자 A씨는 "카테고리가 가전이거나 문구인 상품 중, 재고가 10개 미만인 것들의 총 재고 금액"을 구해야 했다. SUMIFS로 시도해봤지만 '이거나(OR)' 조건이 걸리는 순간 수식이 꼬이기 시작했다. 이럴 때 등장하는 함수가 SUMPRODUCT다. 이름 그대로 '곱한 것들의 합(sum of products)'인데, 이 단순한 이름 안에 조건부 집계 함수들과는 결이 다른 발상이 숨어 있다. SUMPRODUCT는 원래 무엇을 위한 함수였나 SUMPRODUCT의 원래 용도는 사실 단순하다. 두 개 이상의 배열을 같은 위치끼리 곱한 뒤 그 결과를 모두 더하는 것이다. =SUMPRODUCT(A2:A5, B2:B5) A열이 수량, B열이 단가라면 이 수식은 (A2×B2)+(A3×B3)+(A4×B4)+(A5×B5), 즉 각 행의 금액을 계산해 모두 더한 총 판매금액을 한 번에 구해준다. 여기까지는 조건과 아무 상관이 없다. 그런데 이 '배열끼리 곱해서 더한다'는 성질이, 조건을 표현하는 데도 그대로 활용될 수 있다는 점이 SUMPRODUCT를 특별하게 만든다. 핵심 원리 — 조건을 0과 1로 바꿔서 곱하기 엑셀에서 (A2:A100="가전") 처럼 범위와 조건을 비교하면, 그 결과는 TRUE 또는 FALSE로 이루어진 배열이 된다. 그리고 엑셀 내부에서 TRUE는 1로, FALSE는 0으로 계산에 참여한다. 즉 조건 하나를 '만족하면 1, 아니면 0'인 숫자 배열로 바꿀 수 있다는 뜻이다. SUMPRODUCT는 바로 이 성질을 이용해, 조건 배열과 금액 배열을 곱하는 방식으로 조건부 합계를 만들어낸다. 행 카테고리="가전" 재고<10 두 조건 곱(AND) 재고금액 곱해서 더할 값 1 1 (참) 1 (참) 1 50,000 50,000 2 1 (참) 0 (거짓) 0 30,000 0 3 0 (거짓) 1 (참) 0 20,000 0 이 표처럼 각 조건을 0...

[엑셀] SUMIF/SUMIFS — 조건부 집계의 내부 동작 원리조건 배열과 합계 배열이 어떻게 짝지어지는가

 매출 데이터에서 "지역이 서울인 매장의 매출 합계"를 구해야 하는 상황을 떠올려보자. 손으로 하나씩 골라 더할 수도 있겠지만, 행이 수천 개라면 이야기가 달라진다. 이럴 때 등장하는 함수가 SUMIF다. 그런데 정작 "SUMIF가 정확히 어떤 방식으로 조건에 맞는 값만 골라내는가"를 설명해보라고 하면 의외로 막히는 경우가 많다. 이번 글에서는 SUMIF와 SUMIFS의 겉모습이 아니라, 그 내부에서 벌어지는 계산 원리를 뜯어본다. SUMIF의 기본 구조 복습 SUMIF는 세 개의 인수를 받는다. 조건을 검사할 범위, 그 조건 자체, 그리고 실제로 합산할 범위다. =SUMIF(A2:A100, "서울", C2:C100) 여기서 A2:A100은 지역명이 적힌 열, C2:C100은 매출액이 적힌 열이다. 겉으로는 단순히 "서울인 것만 더해줘"라는 명령처럼 보이지만, 내부적으로는 좀 더 구조적인 일이 벌어진다. 조건 배열과 합계 배열이 짝지어지는 방식 SUMIF는 먼저 조건 범위(A2:A100)의 각 셀을 하나씩 검사해서, "서울"과 일치하면 TRUE, 아니면 FALSE로 이루어진 하나의 논리값 배열을 머릿속으로 만든다고 생각하면 이해하기 쉽다. 예를 들어 A2가 "서울", A3이 "부산", A4가 "서울"이라면 그 결과는 {TRUE, FALSE, TRUE, ...} 와 같은 배열이 된다. 그다음 이 TRUE/FALSE 배열을 합계 범위(C2:C100)와 같은 위치끼리 짝지어 대응시킨다. A2가 TRUE이므로 C2의 값을 채택하고, A3이 FALSE이므로 C3의 값은 버리고, A4가 TRUE이므로 C4의 값을 채택하는 식이다. 결국 SUMIF는 "조건 범위에서 만든 참/거짓 지도를, 합계 범위 위에 그대로 겹쳐 놓고, 참인 위치의 값들만 골라 더하는" 함수라고 이해할 수 있다. 이 때문에 조건 범위와 합계 ...