날짜별 시트 제품 누계, SUMIF 하나로 안 될 때

2026-09-12

날짜마다 시트를 하나씩 만들어 판매량을 적어 왔는데, 오늘 시트에서 제품별 누계를 내려니 SUM으로는 안 되고, 시트 이름을 하나씩 클릭해 더하다가 15일쯤에서 손을 놓게 됩니다. 이 글은 그 상황을 수식 한 줄로 끝내는 방법과, 그 수식이 오류 없이 틀린 값을 내는 자리를 다룹니다.

먼저 안 되는 것

시트를 가로지르는 3차원 참조 =SUM('1:31'!C2)는 안 됩니다. 이 수식은 "각 시트의 C2"를 더할 뿐이라, 제품이 매일 같은 행에 있어야만 맞습니다. 어제는 커피가 2행, 오늘은 5행이면 엉뚱한 제품끼리 더해집니다. 제품명으로 찾아서 더하려면 시트마다 SUMIF를 걸고 그 결과를 합쳐야 합니다.

아래 수식은 엑셀 기준입니다. 구글 시트는 INDIRECT가 시트 이름 배열을 한 번에 받지 못해 같은 방식이 통하지 않습니다. 또 닫혀 있는 다른 파일을 INDIRECT로 가리키면 #REF!가 나므로, 시트가 같은 파일 안에 있을 때만 씁니다.

왜 SUMIF 하나로는 안 되나

SUMIF는 범위 하나를 받습니다. 시트 31개면 범위 31개가 필요한데, 그걸 손으로 이어 붙이면 SUMIF('1'!B:B,B2,'1'!C:C)+SUMIF('2'!B:B,B2,'2'!C:C)+… 로 31개 항이 됩니다. 시트가 늘 때마다 수식을 고쳐야 하고, 오늘까지만 더하려면 매일 항을 빼야 합니다. 그래서 시트 이름을 숫자로 만들어 INDIRECT에 넘깁니다.

어떻게 하나

가정은 이렇습니다. 시트 이름이 1, 2, … 31처럼 숫자만이고, 각 시트 B열이 제품명, C열이 수량, 오늘 시트의 E1에 오늘 날짜 숫자(12일이면 12)가 있습니다. 오늘 시트 D2에 넣습니다.

=SUMPRODUCT(SUMIF(INDIRECT("'"&ROW(INDIRECT("1:"&$E$1))&"'!B2:B500"),B2,INDIRECT("'"&ROW(INDIRECT("1:"&$E$1))&"'!C2:C500")))

ROW(INDIRECT("1:12"))가 1부터 12까지 숫자를 만들고, 바깥 INDIRECT가 그 숫자를 '1'!B2:B500'12'!B2:B500 범위 목록으로 바꿉니다. SUMIF가 시트마다 B2 제품의 수량을 합치고, SUMPRODUCT가 12개 결과를 한 번 더 더합니다. 오늘 시트도 범위에 들어 있으니 오늘 입력분까지 누계에 잡힙니다. D2를 아래로 채우면 제품마다 누계가 나옵니다.

B:B 대신 B2:B500으로 적은 이유가 있습니다. INDIRECT는 휘발성 함수라 셀 하나만 고쳐도 다시 계산되는데, 열 전체를 31개 시트에 걸면 파일이 눈에 띄게 느려집니다. 하루 500행이 넘지 않으면 이 정도로 잡습니다.

시트 이름이 9월1일처럼 글자가 붙어 있으면 그 글자를 따옴표 안에 같이 씁니다.

INDIRECT("'9월"&ROW(INDIRECT("1:"&$E$1))&"일'!B2:B500")

작은따옴표는 빼지 않습니다. 이름에 공백이나 한글이 있을 때 작은따옴표가 없으면 #REF!가 납니다.

실무에서 걸리는 자리

첫째, E1에 적은 날짜까지 시트가 하나라도 비어 있으면 전체가 #REF!입니다. 15일 시트를 만들기 전에 E1에 15를 넣으면 바로 깨집니다. 시트 하나가 삭제돼도 같습니다. 오류가 뜨니 이건 그나마 찾기 쉽습니다.

둘째, 제품명 끝에 공백이 붙으면 다른 제품으로 셉니다. 커피커피 는 눈으로 구별이 안 되는데 누계에서 빠집니다. 오류가 안 나고 숫자만 작게 나오니 한참 못 찾습니다. 제품명은 데이터 유효성 검사로 목록에서 고르게 하는 편이 안전합니다.

셋째, 수량이 숫자가 아니면 0으로 잡힙니다. 10개처럼 단위를 붙이거나, 다른 시스템에서 붙여 넣어 텍스트로 저장된 숫자는 SUMIF가 그냥 건너뜁니다. 이것도 오류가 안 납니다.

0이 나올 때 원인을 가르는 법

같은 조건으로 COUNTIF를 하나 더 걸어 봅니다. 건수가 0이면 조건 쪽 문제라 제품명 글자나 공백을 봅니다. 건수는 나오는데 합계가 0이면 값 쪽 문제라 수량이 텍스트인지 봅니다. 이 한 번으로 볼 범위가 절반으로 줄어듭니다.

셋째 함정을 실제로 겪은 자리가 있습니다. 여러 쇼핑몰 주문내역을 합쳐 정산하는 도구를 만들 때, 11번가에서 내려받은 파일의 금액이 23,900처럼 쉼표가 든 문자열로 들어왔습니다. 엑셀에서 열면 숫자처럼 보이는데 왼쪽 정렬이고, 그 열에 SUMIF를 걸면 오류 없이 0이 나왔습니다. 같이 합친 쿠팡 파일은 CP949로 저장돼 있어서 UTF-8로 읽으면 한글이 전부 깨졌고, 깨진 상품명은 어떤 조건에도 안 걸려 역시 0이었습니다. 금액은 쉼표를 벗겨 숫자로 바꾸고, 파일마다 인코딩을 먼저 판별하도록 고쳤습니다. 일부러 지저분하게 만든 테스트 파일 240건으로 돌려, 취소·반품 79건을 빼고 161건이 0.46초에 집계되는 것을 확인했습니다. 엑셀에서 손으로 고치신다면 옆 열에 이렇게 넣고 그 열을 SUMIF에 씁니다.

=VALUE(SUBSTITUTE(C2,",",""))

길게 보면 시트를 나누지 않는 쪽이 편합니다

날짜별 시트는 사람 눈에는 편한데 수식에는 불리합니다. 한 시트에 날짜·제품명·수량 세 열로 쭉 쌓으면 누계가 이 한 줄로 끝나고, INDIRECT를 안 쓰니 파일이 커져도 느려지지 않습니다.

=SUMIFS(C:C,B:B,B2,A:A,"<="&TODAY())

지금 쓰는 날짜별 시트를 당장 못 바꾸시면, 위 SUMPRODUCT 수식으로 이번 달을 넘기고 다음 달 파일부터 한 시트로 바꾸시는 방법이 현실적입니다.

지금 그 파일, 어디가 문제인지 먼저 보시겠습니까

CSV 를 넣으면 계산이 틀어지는 자리를 찾아 드립니다. 무료이고 파일은 서버로 올라가지 않습니다 — 브라우저 안에서만 처리되고 저희도 내용을 볼 수 없습니다.

정산 파일 진단기 열기  ·  무료 자료실

매달 같은 순서로 고치고 계신다면 그 순서를 프로그램으로 옮겨둔 것이 있습니다 — 쇼핑몰 월 정산 자동화. 되는지부터 보시려면 무료 진단.

CHEONOK SYSTEM · 업무 자동화 제작
안 되는 파일이면 안 된다고 말씀드립니다 · 문의 actorlee007@gmail.com
매출이나 수익을 보장하지 않습니다.