기본 콘텐츠로 건너뛰기

[엑셀] 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는 "조건 범위에서 만든 참/거짓 지도를, 합계 범위 위에 그대로 겹쳐 놓고, 참인 위치의 값들만 골라 더하는" 함수라고 이해할 수 있다. 이 때문에 조건 범위와 합계 범위는 반드시 행 개수(또는 크기)가 같아야 한다. 위치가 어긋나면 엉뚱한 값이 더해지거나 오류가 발생한다.

SUMIFS — 여러 조건을 동시에 겹쳐 보기

SUMIFS는 이 원리를 조건 여러 개로 확장한 것이다.

=SUMIFS(C2:C100, A2:A100, "서울", B2:B100, "가전")

이 수식은 "지역이 서울"이라는 참/거짓 배열과 "카테고리가 가전"이라는 참/거짓 배열을 각각 만든 뒤, 두 배열을 같은 위치끼리 AND 연산으로 겹친다. 즉 두 조건이 동시에 TRUE인 위치만 최종적으로 TRUE로 남고, 그 위치에 해당하는 합계 범위의 값만 더해진다. SUMIF는 인수 순서가 '합계범위, 조건범위, 조건'인데 SUMIFS는 '합계범위, 조건범위1, 조건1, 조건범위2, 조건2, ...' 순서로, 합계 범위가 맨 앞으로 온다는 차이도 실수하기 쉬운 부분이니 기억해두자.

구조를 알면 보이는 실전 활용

상황수식 예시
날짜 범위 내 매출 합계=SUMIFS(C:C, D:D, ">="&DATE(2026,1,1), D:D, "<="&DATE(2026,1,31))
특정 문자로 시작하는 항목 합계=SUMIF(A:A, "서울*", C:C)
여러 지역 중 하나라도 해당하면 합계=SUM(SUMIF(A:A, {"서울","부산"}, C:C))

날짜 범위처럼 부등호 조건을 두 번 겹치는 경우도 결국 "이상인 위치"와 "이하인 위치"라는 두 개의 참/거짓 배열을 AND로 겹치는 동일한 원리다. 이 원리를 이해하고 나면 SUMIFS의 조건이 왜 짝수 개의 인수(범위, 조건)로만 늘어나는지도 자연스럽게 납득이 간다.

자주 하는 실수

  • 조건 범위와 합계 범위의 행 개수가 다른 경우: A2:A100인데 C2:C99처럼 범위가 어긋나면 위치가 밀려 잘못된 값이 더해지거나 오류가 난다.
  • 텍스트 조건에 따옴표를 빠뜨리는 경우: "서울"처럼 문자 조건은 반드시 큰따옴표로 감싸야 한다.
  • 절대참조를 걸지 않아 수식을 복사할 때 범위가 밀려버리는 경우: 조건 범위와 합계 범위는 대부분 $ 기호로 고정해두는 것이 안전하다.

Q. SUMIF와 SUMIFS 중 조건이 하나뿐이면 어떤 걸 써야 하나요?

조건이 하나뿐이라면 SUMIF로도 충분하다. 다만 앞으로 조건이 늘어날 가능성이 있다면 처음부터 SUMIFS로 작성해두는 것이 나중에 수식을 수정하기 편하다.

Q. 조건 범위에 숫자가 섞여 있어도 되나요?

가능하다. ">=100"처럼 부등호와 숫자를 하나의 텍스트 조건으로 묶어서 사용하면 된다.

Q. OR 조건(둘 중 하나)은 어떻게 처리하나요?

SUMIFS 자체는 AND 조건만 지원하므로, OR 조건이 필요하면 위 표의 세 번째 예시처럼 배열 상수와 SUM을 함께 사용하거나 SUMIF를 여러 번 더해주는 방식을 쓴다.

마무리

SUMIF와 SUMIFS의 핵심은 "조건 범위를 참/거짓 배열로 바꾸고, 그 배열을 합계 범위 위에 겹쳐서 참인 위치만 더한다"는 한 문장으로 요약된다. 여러 조건을 쓰는 SUMIFS는 이 참/거짓 배열들을 AND로 겹치는 것뿐이다. 다음 글에서는 이 원리와 구조적으로 매우 닮아 있는 COUNTIF/COUNTIFS가 '더하기' 대신 '개수 세기'를 어떻게 처리하는지 비교해본다.

이 블로그의 인기 게시물

[엑셀]엑셀 날짜는 사실 숫자다 — 1900년부터 세어온 일련번호의 정체

 날짜가 적힌 셀에 그냥 1을 더하면 무슨 일이 벌어질까? 신기하게도 결과는 정확히 '다음 날 날짜'가 된다. 문자처럼 보이는 날짜에 어떻게 숫자를 더했는데 날짜가 하루 늘어날 수 있을까. 답은 간단하다. 엑셀에서 날짜는 애초에 문자가 아니라 숫자이기 때문이다. 날짜가 숫자로 저장된다는 사실 확인하기 날짜가 입력된 셀의 서식을 '일반'으로 바꿔보면 그 정체가 바로 드러난다. 2026-01-15라고 표시되던 셀이 갑자기 46037 같은 숫자로 바뀐다. 이 숫자가 바로 엑셀이 내부적으로 이 날짜를 저장하고 있는 실제 값, 즉 시리얼 넘버(일련번호)다. 화면에 "2026-01-15"라고 보이는 것은 앞서 TEXT 함수 편에서 다룬 것처럼, 이 숫자 위에 날짜 서식이라는 표시 규칙이 덧씌워진 결과일 뿐이다. 1900년을 기준으로 세는 시리얼 넘버 시스템 엑셀은(윈도우 버전 기준) 1900년 1월 1일을 시리얼 넘버 1로 정하고, 그날부터 하루가 지날 때마다 숫자를 1씩 늘려가는 방식으로 날짜를 표현한다. 46037이라는 숫자는 곧 "1900년 1월 1일로부터 46,037번째 되는 날"이라는 뜻이다. 날짜에 숫자를 더하거나 빼는 계산이 자연스럽게 되는 이유가 바로 여기에 있다. 날짜끼리의 덧셈·뺄셈은 사실 이 일련번호끼리의 평범한 산술 연산일 뿐이다. =DATE(2026,1,15) + 30 이 수식은 2026년 1월 15일의 시리얼 넘버에 30을 더한 것과 같으므로, 결과는 정확히 30일 뒤의 날짜인 2026년 2월 14일이 된다. 시간은 어떻게 표현될까 — 소수점 이하가 하루의 몇 분의 몇인지 날짜가 정수로 표현된다면, 시간은 그 정수의 소수점 이하 부분으로 표현된다. 하루 24시간을 1로 놓았을 때, 낮 12시는 하루의 정확히 절반이므로 0.5가 된다. 예를 들어 46037.5라는 값은 "2026년 1월 15일 낮 12시"를 의미한다. 날짜와 시간이 함께 입력된 셀을 다룰 때 정수 부...

[엑셀]COUNTIF/COUNTIFS — 카운팅과 조건 매칭의 관계 SUMIF와의 구조적 유사성과 차이

 출석부를 관리하다 보면 "결석이 3회 이상인 학생 수"나 "이번 달 지각 횟수"처럼 특정 조건을 만족하는 항목이 '몇 개'인지 세야 하는 순간이 자주 온다. 앞선 글에서 다룬 SUMIF가 조건에 맞는 값들을 '더하는' 함수였다면, 이번에 다룰 COUNTIF는 조건에 맞는 항목이 '몇 개'인지를 세는 함수다. 이름도 구조도 SUMIF와 매우 닮았지만, 자세히 들여다보면 미묘하지만 중요한 차이가 하나 숨어 있다. COUNTIF의 기본 구조 =COUNTIF(A2:A100, "결석") COUNTIF는 조건을 검사할 범위와 조건, 이렇게 두 개의 인수만 받는다. A2:A100 범위에서 "결석"이라는 값과 일치하는 셀이 몇 개인지를 세어 그 개수를 반환한다. SUMIF와 COUNTIF의 구조적 유사성 지난 글에서 SUMIF의 원리를 "조건 범위를 참/거짓 배열로 바꾸고, 그 배열을 합계 범위 위에 겹쳐서 참인 위치만 더한다"고 설명했다. COUNTIF도 앞부분까지는 완전히 동일하다. 조건 범위를 검사해서 참/거짓 배열을 만드는 과정까지는 똑같다. 차이는 그다음이다. SUMIF는 이 배열을 다른 범위(합계 범위) 에 겹쳐서 값을 더하지만, COUNTIF는 겹칠 다른 범위 자체가 필요 없다. 그냥 참/거짓 배열에서 TRUE의 개수만 세면 끝나기 때문이다. 즉 "무엇을 더할지"를 지정할 필요가 없으므로 인수가 하나 줄어드는 것이다. 이렇게 보면 COUNTIF(범위, 조건)는 개념적으로 SUMIF(범위, 조건, 참거짓배열자체) 와 비슷한 일을 하는 셈이다. COUNTIFS — 여러 조건의 동시 만족 =COUNTIFS(A2:A100, "결석", B2:B100, ">=3") COUNTIFS 역시 SUMIFS와 동일한 방식으로 확장된다. 각 조건 범위마다 참/거짓 배열을 만들고, 이 배열들을...

[엑셀]LEFT·RIGHT·MID의 공통점 — 텍스트는 결국 문자들의 배열이다

 "010-1234-5678"이라는 전화번호에서 가운데 네 자리만 뽑아내고 싶을 때, 많은 사람이 LEFT나 RIGHT는 익숙하게 쓰면서도 MID는 어렵게 느낀다. 그런데 이 세 함수는 사실 하나의 동일한 원리 위에서 동작한다. 텍스트를 하나의 덩어리가 아니라, 문자 하나하나가 순서대로 나열된 '배열'로 바라보는 관점이다. 텍스트를 문자 단위 배열로 보는 관점 "엑셀"이라는 두 글자 텍스트는, 배열의 눈으로 보면 1번째 자리에 "엑", 2번째 자리에 "셀"이 들어 있는 구조와 다르지 않다. 앞서 여러 글에서 다룬 배열이 셀들의 모음이었다면, 문자열 함수에서의 배열은 '문자들의 모음'이라는 점만 다를 뿐 "위치를 기준으로 원하는 부분만 골라낸다"는 발상 자체는 동일하다. LEFT·RIGHT·MID가 공유하는 하나의 원리 =LEFT("010-1234-5678", 3) → "010" =RIGHT("010-1234-5678", 4) → "5678" =MID("010-1234-5678", 5, 4) → "1234" 세 함수 모두 "어디서부터, 몇 글자를" 가져올지를 지정한다는 점에서 본질적으로 같은 함수다. LEFT는 항상 1번째 자리부터 시작한다고 고정해둔 것이고, RIGHT는 항상 끝에서부터 거꾸로 센 것이며, MID는 시작 위치를 자유롭게 지정할 수 있도록 일반화한 버전이다. 즉 LEFT와 RIGHT는 MID의 특수한 경우라고 볼 수 있다. MID로 문자 단위 추출을 직접 확인해보기 이 원리를 직접 확인해보는 가장 좋은 방법은 MID로 한 글자씩 뽑아보는 것이다. =MID("엑셀",1,1) → "엑" (1번째 자리 문자 1개) =MID("엑셀",2,1) → ...