• 최초 작성일: 2001-03-13
  • 최종 수정일: 2026-09-29
  • 조회수: 24 회
  • 작성자: 권현욱 (엑셀러)
  • 강의 제목: 자료 위치 바꾸기

들어가기 전에

오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.

오래간만에 배열(Array)과 Offset 함수를 사용하는 예제 한가지를 살펴보도록 하지요. 함수가 서말이라도 꿰어야 … 자주 써보지 않으면 이내 잊어버리게 마련입니다.

아래의 (표 1)과 (표 2)를 보세요. 표만 보아도 무엇을 만들고자 하는지 아시겠지요?

권현욱(엑셀러)
저자: 권현욱(엑셀러), 아이엑셀러 대표

필자는 Excel 컨설턴트, 작가, 그리고 크리에이터입니다. 현재 Microsoft Excel MVP이며, 『챗GPT+엑셀 업무자동화 정석』을 비롯한 10여 권의 도서를 집필했습니다. Excel 자동화 및 생산성 향상 분야에서 25년 넘는 경력을 보유하고 있습니다.

권현욱(엑셀러) 님의 최신 포스트:
  • 최신 글을 불러오는 중...


26년 경력 Microsoft MVP 권현욱(엑셀러) 지음

📊 신간 전자책(PDF) · 287쪽 · 13500원

엑셀 대시보드를 만드는 최적의 '표준 3계층 구조'

  • 3초 안에 읽히는 화면 설계 감각 습득
  • Microsoft Excel MVP의 실전 노하우 수록
  • 중간마진 없는 합리적인 가격, 오직 아이엑셀러에서만!
지금 구매하기 완성 화면 보기

자료 위치 바꾸기

핵심 요약

  • 세로 또는 가로로 배치된 자료의 순서를 반대로 표시하려면 OFFSET과 행·열 번호 계산을 조합할 수 있습니다.
  • 세로 자료는 MAX와 ROW로 원본 범위의 마지막 위치부터 역순으로 참조하고, 배열 수식으로 결과 영역에 한 번에 채웁니다.
  • 가로 자료는 같은 원리를 COLUMN에 적용하면 열 방향으로 배치된 값도 반대 순서로 가져올 수 있습니다.
(표 1) (표 2)
번호 이름 번호 이름
1 갑동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B17),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C17),1)}
2 을동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B18),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C18),1)}
3 병동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B19),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C19),1)}
4 정동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B20),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C20),1)}
5 무동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B21),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C21),1)}
6 기동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B22),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C22),1)}
7 경동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B23),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C23),1)}
8 신동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B24),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C24),1)}
9 임동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B25),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C25),1)}
10 계동이 {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B26),0)} {=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C26),1)}

(표 1)과 같은 자료가 있다고 할 때 이것의 순서를 반대로 바꾸어서 표시하는 것입니다. (표 2)의 번호와 이름 부분에는 아래와 같은 수식이 사용되었습니다.

=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B17),0)
=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(C17),1)

배열 수식을 사용하였으므로 수식을 입력한 다음, Ctrl + Shift + Enter를 누릅니다. Offset 함수에 대해 다시 한번 정리를 해 보면, 지정한 행 또는 열의 수만큼 떨어져 있는 특정영역을 리턴, 즉 표시해 주는 함수입니다.

Offset(기준영역, 행, 열, 취할 행 수, 취할 열 수)

이런 형태로 사용합니다. 여기서 취할 행 수, 열 수를 생략하면 기준영역과 같은 크기의 영역을 리턴해 줍니다. Offset 함수가 어떤 것이며, 어떤 식으로 응용할 수 있는지 잘 생각이 나지 않으면 X0024, X0143 강좌 등을 살펴보고 오시기 바랍니다.

Max 함수와 Row 함수는 아시겠지요? Max 함수는 지정한 영역 내의 최대값을 돌려줍니다. 그리고 Row 함수는 지정된 영역내의 행번호를 리턴해 줍니다. 위 수식이 잘 이해되지 않는 부분은 <F9>키를 사용해서 수식의 맨 안쪽에서부터 분석해 보면 좀더 쉽게 아실 수 있을 것입니다.

그렇다면 (표 3)과 같이 가로 방향으로 배치되어 있는 표를 반대순서로 배치하려면 어떻게 하면 될까요.

(표 3)

번호 1 2 3 4 5 6 7
이름 갑동이 을동이 병동이 정동이 무동이 기동이 경동이

(표 4)

번호 {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,0,MAX(COLUMN($C$53:$I$53))-COLUMN())}
이름 {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())} {=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())}

이것은 문제로 내 드릴테니 잘 생각해 보시기 바랍니다. (표 1)을 (표 2)와 같은 형태로 바꾸어 주는 방법을 약간만 응용하면 되겠지요?

오늘은 여기까지… 하려고 했는데…

에라, 내친 김에 이것도 마저 알려드리지요. 공연히 많은 분들 잠못들게 만들어 욕먹지 않기 위해서… ^^; C58 셀에는 아래와 같은 수식이 입력되어 있습니다.

=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())

역시 배열 수식이므로 위와 같이 입력하신 다음 Ctrl + Shift + Enter 키를 함께 눌러 마무리를 해 주셔야 겠지요? Row를 Column으로 바꾸고 위치값을 약간 수정해 주었을 뿐, 나머지는 같습니다.

다음 시간에 또…

정리 — 자료 위치 바꾸기

구분내용
세로 자료 역순=OFFSET($B$17:$B$26,MAX(ROW($B$17:$B$26))-ROW(B17),0)
가로 자료 역순=OFFSET($C$53:$I$53,1,MAX(COLUMN($C$53:$I$53))-COLUMN())
OFFSET 구문Offset(기준영역, 행, 열, 취할 행 수, 취할 열 수)
입력 방법Ctrl + Shift + Enter (배열 수식)

자주 묻는 질문 (FAQ)

Q1. 세로로 나열된 자료의 순서를 거꾸로 표시하려면?

OFFSET 함수와 MAX, ROW 함수를 조합한 배열 수식을 사용합니다. 마지막 행 번호에서 현재 행 번호를 뺀 만큼 떨어진 위치의 값을 가져옵니다.

Q2. 가로 방향 자료는 어떻게 하나요?

같은 원리를 적용하면 됩니다. ROW를 COLUMN으로 바꾸고 위치값을 조금 수정하면 열 방향의 자료도 반대 순서로 가져올 수 있습니다.

Q3. 수식이 이해되지 않을 때는 어떻게 분석하나요?

F9 키를 이용해 수식의 맨 안쪽부터 결과를 확인하며 분석하면 쉽게 이해할 수 있습니다.

마치며

OFFSET 함수의 개념을 잘 익혀 두면 자료 배치를 바꾸는 다양한 작업에 응용할 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.