- 최초 작성일: 2001-02-23
- 최종 수정일: 2026-09-29
- 조회수: 24 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: INDIRECT 함수 사용예제
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
고수님들께 일정범위(A1:A200)에서 상위 N개 까지의 합을 구하는 배열식은 아래와 같다고 하는데… {=SUM(LARGE(A1:A200,ROW(INDIRECT("1:N"))))} 위 배열식에서 ROW(INDIRECT("1:N")) 이 부분이 이해가 안됩니다. 이 부분에 대한 설명을 고수 여러분에게 부탁드립니다.
또 비슷한 질문 하나
안녕하세요? 업무와 관련해서 보고서를 작성하고 있습니다. 예를 들어, 동서울, 남서울, 경기, 강원, 충청, 호남, 영남 등의 시트들이 있다고 할 때, 집계 시트에서 동서울의 A1 셀에 있는 값을 표시하려면 =동서울!A1 이렇게 입력을 하는데 셀 주소값을 가지고 실제값을 읽어들이는 방법이 없을까요? 꼭 알려 주세요!
일단 아래의 버튼을 눌러 보시기 바랍니다.
INDIRECT 함수 사용예제
핵심 요약
- 상위 N개 값의 합계를 구하는 배열 수식에서는 INDIRECT와 ROW를 조합해 1부터 N까지의 배열을 동적으로 만들 수 있습니다.
- ROW(INDIRECT("1:N"))은 {1;2;…;N} 형태의 순번 배열을 만들고 LARGE가 해당 순위의 큰 값들을 반환합니다.
- 마지막으로 SUM으로 결과를 합치고 Ctrl+Shift+Enter로 배열 수식을 확정하면 N값만 바꿔 원하는 범위의 상위 합계를 계산할 수 있습니다.
참고: 원문의 예제 표(난수 30개와 RANK 수식, 설명 글이 뒤섞여 있던 표)는 표시가 손상되어 있어, 표 안에 남아 있던 설명과 수식을 순서대로 정리했습니다. 수식에 나오는 Stage는 B36:B65 범위의 이름으로 보이며, D36 셀(Criteria)에 상위 몇 개까지의 합을 구할지 입력하면 F36 셀(Results)에 결과가 표시되는 예제입니다.
이제 Criteria, 즉 빨간 셀에는 상위 몇 개까지의 합을 구할 것인지 입력해 보세요. 순위를 입력함과 동시에 Results 부분에 결과값이 바로 표시가 되지요?
=1&":"&D36
D36 셀에 10을 입력하면 이 수식은 1:10 이라는 문자열을 만들어 주며, 아래 (1)의 기준 자리에는 이런 형태의 문자열이 사용됩니다.
F36 셀에 가 보시면 아래와 같은 수식이 들어있을 것입니다.
(1)
{=SUM(LARGE(Stage,ROW(INDIRECT(기준))))}
이것은 질문하신 분의 코드를 약간 수정한 것입니다.
(2)
{=SUM(LARGE(A1:A200,ROW(INDIRECT("1:N"))))}
이 수식을 분석해 보도록 하지요. 복잡한 수식을 분석할 때에는 항상 맨 안쪽부터 해석해 오는 것이 이해하기가 쉽습니다.
① Row(Indirect("1:N"))
Indirect 함수는 문자열을 셀 참조 형식으로 리턴해 주는 함수입니다. 예를 들어(이것은 도움말에 있는 예제입니다) A1 셀에 B2라는 문자열이 있고 B2 셀에는 1.33이라는 숫자값이 각각 입력되어 있다고 할 경우, C1 셀에 =Indirect(A1)이라고 입력하면 1.33이라는 결과를 얻을 수 있습니다.
따라서 만약 D36 셀에 10이라는 값을 입력했다고 하면, ①의 수식은 {1;2;3;4;5;6;7;8;9;10} 이런 배열값이 지정될 것입니다.
② Large(Row(Indirect("1:N"))) Large 함수는 그 이름에서도 짐작할 수 있듯이, 데이터 중에서 n번째로 큰 값을 구해주는 함수입니다. 예를 들어 =Large(b36:b65, 5)라고 입력해 보세요. 지정영역 내에서 다섯번째로 큰 값을 되돌려 줄 것입니다.
따라서 ②의 수식은 1 ~ 10번째로 큰 숫자들을 1차원 배열형태로 리턴해 줍니다.
③ =Sum(Large(Row(Indirect("1:N")))) 이제 앞에 Sum을 붙여준 다음 Ctrl + Shift + Enter키를 함께 탁 치면 원하시는 결과를 얻게 되는 것이지요.
재미있는 질문을 주신 덕택에 Indirect 함수와 배열 수식에 대해 다시 한번 살펴보는 계기가 되었습니다. (2)의 수식이 이해가 되는 분들은 (1)의 수식도 눈여겨 보시기 바랍니다. 범위명을 어떻게 사용했는지, 셀 서식은 어떻게 지정해 주었는지…
오늘은 여기까지…
정리 — INDIRECT 함수 사용예제
| 구분 | 내용 |
|---|---|
| 질문의 수식 | {=SUM(LARGE(A1:A200,ROW(INDIRECT("1:N"))))} |
| INDIRECT 함수 | 문자열을 셀 참조 형식으로 돌려줌 (A1에 B2라는 문자열, B2에 1.33이 있을 때 =INDIRECT(A1)은 1.33) |
| ROW(INDIRECT("1:N")) | N이 10이면 {1;2;3;4;5;6;7;8;9;10} 형태의 순번 배열 |
| LARGE 함수 | 순번 배열을 주면 1번째부터 N번째로 큰 값들을 배열로 돌려줌 |
| SUM 함수 | 앞의 결과를 합한 뒤 Ctrl+Shift+Enter로 배열수식 확정 |
| 분석 요령 | 복잡한 수식은 맨 안쪽부터 해석 |
자주 묻는 질문 (FAQ)
Q1. ROW와 INDIRECT를 함께 쓴 부분은 무엇을 만드나요?
1부터 N까지의 순번 배열을 만듭니다. INDIRECT가 1:N 문자열을 행 범위로 바꾸고 ROW가 그 행 번호들을 배열로 돌려줍니다.
Q2. 상위 N개의 합계는 어떤 원리로 구해지나요?
LARGE에 순번 배열을 주면 1번째부터 N번째로 큰 값들이 배열로 돌아오고 SUM이 그 값들을 합합니다. 배열수식이므로 Ctrl+Shift+Enter로 확정합니다.
Q3. INDIRECT 함수는 어떤 함수인가요?
문자열을 셀 참조 형식으로 돌려주는 함수입니다. A1 셀에 B2라는 문자열이 있고 B2 셀에 1.33이 있다면 INDIRECT(A1)의 결과는 1.33입니다.
마치며
INDIRECT와 ROW를 조합한 순번 배열은 N 값만 바꾸면 되므로 상위 합계 계산에 편리하게 응용할 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.