- 최초 작성일: 2002-02-27
- 최종 수정일: 2026-09-29
- 조회수: 15 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 여러 시트의 선택적 합계 구하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
현재 Exceller의 강좌는 아래의 두 곳을 통해 제공되고 있습니다. http://www.iExceller.com 과 http://my.netian.com/~exceller
여러 시트의 선택적 합계 구하기
핵심 요약
- SUMIF는 여러 시트에 걸친 3차원 범위를 직접 조건 범위로 사용할 수 없습니다.
- INDIRECT로 각 시트의 범위를 문자열로 만들고 SUMIF를 배열 형태로 계산하면 여러 시트의 조건부 합계를 구할 수 있습니다.
- 배열 수식은 Ctrl+Shift+Enter로 입력하며, 여러 함수의 역할을 예제와 함께 이해하는 것이 중요합니다.
앞으로는 http://www.iExceller.com 사이트를 통해서만 강좌 파일을 올려야 할 것 같습니다. 네띠앙 측에서 서비스 기준을 변경하여 일정 용량을 초과하는 홈페이지에 대해서는 유료로 전환한다는 통보를 해 왔습니다. 따라서 미러 사이트와의 통합이 필요한 시점이라 생각되어 두 사이트를 합치게 되었으므로 네띠앙 서버를 통해 접속을 해오시던 분들은 이용에 착오 없으시기를 바랍니다. 홈 정문 우측에 있는 '시작페이지로' 또는 '즐겨찾기에 추가' 아이콘을 클릭하시면 자동으로 여러분의 북마크가 Update 됩니다.
질문 하나
…(중략)… 같은 형태를 가진 여러 개의 시트가 있는데 값이 0보다 큰 값만 모두 더하려면 어떻게 하면 될까요? 뭐 지금도 자료량이 많질 않아서 그다지 힘이 들진 않지만 나중에라도 복잡해 질 경우를 대비해서 말입니다. 늘 감사하는 마음으로 강좌를 보고 있습니다. 앞으로도 좋은 내용 많이많이 올려 주세요.
특정 영역 내에서 주어진 조건을 만족하는 데이터의 개수 또는 합계를 구하고자 할 경우…
그렇습니다. Countif나 Sumif 함수를 사용합니다. 그런데… 질문하신 것과 같이 합계를 구할 범위가 서로 다른 시트에 분산되어 있을 경우, 즉 3차원인 경우에는 Countif나 Sumif를 사용할 수 없게 됩니다.
=SUMIF(Sheet1:Sheet3!A1:E5,">=0")
위와 같이 에러가 발생합니다.
[Sheet 1]
[Sheet 2]
[Sheet 3]
그런데 아래의 빨간색 셀을 보면 제대로 계산이 되어 있음을 알 수 있습니다. 실제로 배열 수식이 입력된 셀을 보면 파란색으로 정상적으로 계산된 결과가 표시되어 있음을 확인할 수 있습니다. 입력된 수식을 살펴보면…
{=SUM(SUMIF(INDIRECT("Sheet"&ROW(INDIRECT("1:3"))&"!a1:e5"),">0"))}
많이 눈에 익은 함수들이지요? 우리가 영어를 배울 때 어려움을 겪는 것 중 하나가 단어는 열심히 잘 외우는데 문장 내에서 어떻게 사용되는지 잘 응용이 안된다는 것입니다. 함수도 마찬가지입니다. Indirect 함수하면 그저, "문자열을 셀 주소 형식으로 돌려주는 함수" 이런 식으로만 아는 것은 아는 것이 아닙니다. 영어 단어를 공부할 때에도 단어 뜻만 달달 외우는 것이 아니라 문장과 함께 익히듯이 함수를 공부함에 있어서도 예제와 함께 이해를 하는 것이 중요합니다.
이미 여러 차례 소개를 드린 함수들이므로 원리를 잘 따져 보세요. 그리고 수식 앞과 뒤에 붙은 중괄호는 손으로 입력하는 것이 아니라 Ctrl + Shift + Enter 키를 함께 누르면 자동으로 생기는 것입니다. 이것을 배열 수식이라고 한다는 것은 다들 아실 터이므로 더 이상의 설명은 생략…
정리 — SUMIF의 3차원 한계와 INDIRECT 우회법
| 항목 | 설명 |
|---|---|
| 문제 상황 | SUMIF(Sheet1:Sheet3!A1:E5,...)처럼 3차원 범위를 직접 조건 범위로 쓰면 에러 발생 |
| INDIRECT의 역할 | "Sheet"&ROW(...)&"!a1:e5" 형태의 문자열을 실제 셀 범위로 변환 |
| 배열 수식 | ROW(INDIRECT("1:3"))로 시트별 SUMIF 결과를 배열로 만든 뒤 SUM으로 총합 계산 |
| 입력 방법 | 수식 입력 후 Ctrl+Shift+Enter로 확정해야 배열 수식(중괄호)이 적용됨 |
자주 묻는 질문 (FAQ)
Q1. SUMIF 함수로 여러 시트에 걸친 3차원 범위를 바로 합산할 수 있나요?
아니요. =SUMIF(Sheet1:Sheet3!A1:E5,">=0")처럼 3차원 범위를 조건 범위로 직접 지정하면 에러가 발생합니다. SUMIF는 2차원 범위만 조건 범위로 받아들이기 때문입니다.
Q2. 여러 시트에 분산된 값 중 조건에 맞는 값만 합산하려면 어떻게 하나요?
INDIRECT 함수로 각 시트의 범위를 문자열로 만들고, 이를 SUMIF와 함께 배열 형태로 계산한 뒤 SUM으로 감싸면 됩니다. 예: {=SUM(SUMIF(INDIRECT("Sheet"&ROW(INDIRECT("1:3"))&"!a1:e5"),">0"))}
Q3. 배열 수식은 어떻게 입력하나요?
수식을 입력한 뒤 Enter 대신 Ctrl+Shift+Enter를 누르면 수식 앞뒤에 중괄호({ })가 자동으로 붙으며 배열 수식으로 등록됩니다. 중괄호를 손으로 직접 입력해서는 안 됩니다.
마치며
SUMIF가 직접 다루지 못하는 3차원 범위도 INDIRECT와 배열 수식을 조합하면 우회할 수 있습니다. 함수 하나하나를 단어처럼 외우기보다 이런 예제를 통해 조합하는 원리를 익혀 두시면 실무에서 훨씬 유용하게 활용하실 수 있을 것입니다.