- 최초 작성일: 2001-05-08
- 최종 수정일: 2026-09-29
- 조회수: 21 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 최대값 주소 알아내기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
| =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 | =RAND()*100 |
이런 자료가 있다고 할 때, 열에서 가장 큰 자료가 있는 셀의 주소를 표시하려면 어떻게 해야 하나요?
실무적으로 이런 작업을 사용할 경우가 있을까 생각해 보았는데, 여러 종류의 함수들을 종합적으로 응용해 볼 수 있는 예제가 될 것 같아 아래와 같이 만들어 보았습니다. 각 열에서 최대값을 가진 셀의 주소를 구하고 그 아래에다가 그 셀의 값을 다시 나타내 주었습니다.
최대값 주소 알아내기
핵심 요약
- 각 열에서 최대값이 들어 있는 셀의 주소를 구하려면 MAX, MATCH, INDEX, ROW, COLUMN, ADDRESS 함수를 조합할 수 있습니다.
- ADDRESS 함수는 행 번호와 열 번호를 셀 주소 문자열로 바꾸며, 예제에서는 배열 수식으로 최대값 위치를 찾아 주소를 반환합니다.
- 구한 주소는 INDIRECT 함수에 넘겨 해당 셀의 실제 최대값을 다시 가져올 수 있습니다.
| 셀 주소 | {=ADDRESS(ROW(INDEX(B8:B21,MATCH(MAX(B8:B21),B8:B21,0))),COLUMN(INDEX(B8:B21,MATCH(MAX(B8:B21),B8:B21))),4)} | {=ADDRESS(ROW(INDEX(C8:C21,MATCH(MAX(C8:C21),C8:C21,0))),COLUMN(INDEX(C8:C21,MATCH(MAX(C8:C21),C8:C21))),4)} | {=ADDRESS(ROW(INDEX(D8:D21,MATCH(MAX(D8:D21),D8:D21,0))),COLUMN(INDEX(D8:D21,MATCH(MAX(D8:D21),D8:D21))),4)} | {=ADDRESS(ROW(INDEX(E8:E21,MATCH(MAX(E8:E21),E8:E21,0))),COLUMN(INDEX(E8:E21,MATCH(MAX(E8:E21),E8:E21))),4)} | {=ADDRESS(ROW(INDEX(F8:F21,MATCH(MAX(F8:F21),F8:F21,0))),COLUMN(INDEX(F8:F21,MATCH(MAX(F8:F21),F8:F21))),4)} | {=ADDRESS(ROW(INDEX(G8:G21,MATCH(MAX(G8:G21),G8:G21,0))),COLUMN(INDEX(G8:G21,MATCH(MAX(G8:G21),G8:G21))),4)} | {=ADDRESS(ROW(INDEX(H8:H21,MATCH(MAX(H8:H21),H8:H21,0))),COLUMN(INDEX(H8:H21,MATCH(MAX(H8:H21),H8:H21))),4)} | {=ADDRESS(ROW(INDEX(I8:I21,MATCH(MAX(I8:I21),I8:I21,0))),COLUMN(INDEX(I8:I21,MATCH(MAX(I8:I21),I8:I21))),4)} |
| 최대값 | =INDIRECT(B32) | =INDIRECT(C32) | =INDIRECT(D32) | =INDIRECT(E32) | =INDIRECT(F32) | =INDIRECT(G32) | =INDIRECT(H32) | =INDIRECT(I32) |
{=ADDRESS(MAX(IF(B9:B21=MAX(B9:B21),ROW(B9:B21),"")),COLUMN(B9:B21),4)}
B32 셀에는 아래와 같은 무시무시한(?) 함수가 들어 있습니다.
{=ADDRESS(ROW(INDEX(B8:B21,MATCH(MAX(B8:B21),B8:B21,0))),COLUMN(INDEX(B8:B21,MATCH(MAX(B8:B21),B8:B21))),4)}
Address라는 함수에 대해서는 설명을 드렸던가요? 잘 기억이 나지 않는데... 이 함수는 주어진 행과 열 번호를 가지고 셀 주소를 만들어 주는 함수입니다. 예를 들어 =Address(3,4,4)라고 입력을 하면, 'D3' 이라는 셀 주소를 되돌려 줍니다.
| =ADDRESS(3,4,4) | D3 |
그 이외의 나머지 Row, Column, Match, Index 함수 등은 이미 설명을 드린 기억이 납니다. 혹시 잘 기억이 안나는 분은 예전 강좌나 도움말을 참고하시기 바랍니다. 그리고 수식의 좌우에 중괄호({})가 있는 것으로 보아... 그렇지요! 배열 수식을 사용한 것입니다. Ctrl + Shift + Enter키를 눌러서 마무리를 하시면 됩니다.
또는 아래와 같은 수식을 사용하셔도 되겠습니다. 역시 배열 수식입니다.
{=ADDRESS(MAX(IF(B9:B21=MAX(B9:B21),ROW(B9:B21),"")),COLUMN(B9:B21),4)}
많이 응용해 보시기 바랍니다.
그러고 보니 오늘이 어버이 날이군요. 세상의 모든 어버이들은 위대합니다. Exceller도 이제 어버이입니다. 고로 Exceller도 위해하다아?!@#$
잠시 허튼 소리 좀 했습니다. 세상의 모든 어버이들이 위대한 것은 사실입니다. 부모님의 마음을 조금이나마 헤아리려고 노력하는 하루가 되시기를...
다음 시간에 또...
정리 — 최대값 주소 알아내기
| 구분 | 내용 |
|---|---|
| ADDRESS 함수 | 행 번호와 열 번호로 셀 주소 문자열 생성 (=ADDRESS(3,4,4) 결과는 D3) |
| 최대값 주소 수식 | {=ADDRESS(MAX(IF(B9:B21=MAX(B9:B21),ROW(B9:B21),"")),COLUMN(B9:B21),4)} |
| 다른 방법 | INDEX, MATCH, MAX, ROW, COLUMN, ADDRESS를 조합한 배열 수식 |
| 입력 방법 | Ctrl + Shift + Enter (배열 수식) |
| 최대값 표시 | 구한 주소를 =INDIRECT(B32)로 참조 |
자주 묻는 질문 (FAQ)
Q1. 각 열에서 최대값이 있는 셀의 주소는 어떻게 구하나요?
MAX로 최대값을 찾고 MATCH, INDEX, ROW, COLUMN으로 그 위치를 구한 뒤 ADDRESS 함수로 셀 주소를 만드는 배열 수식을 사용합니다.
Q2. ADDRESS 함수는 어떤 함수인가요?
주어진 행과 열 번호로 셀 주소를 만들어 돌려주는 함수입니다. 예를 들어 행 3, 열 4를 넣으면 D3을 반환합니다.
Q3. 구한 주소의 실제 값은 어떻게 가져오나요?
주소가 들어 있는 셀을 INDIRECT 함수로 참조하면 그 셀의 값, 즉 최대값을 가져올 수 있습니다.
마치며
여러 함수를 종합적으로 응용해 보는 좋은 연습이니 직접 수식을 입력해 보세요. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.