- 최초 작성일: 2013-12-02
- 최종 수정일: 2026-09-21
- 조회수: 36 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 원하는 곳으로 이동하기
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
2013년 올 한해도 마지막 한 장을 남겨두고 있습니다.
금년에 세워 두었던 Exceller의 To-do List를 들여다봅니다.
예년보다 가짓수는 좀 적게 8개가 적혀 있네요.
2개를 달성했고, 1개는 달성을 목전에 두고 있고, 1개는 물 건너 갔고,
4개는 2014년(1), 2017년(1), 2018년(2), 이렇게 남아 있습니다.
<모멘텀 이펙트>의 저자인 장 클로드 라레슈 교수의 말을 떠올려 봅니다.
기업이 저지르는 실수는 두 종류로 나눌 수 있다.
해야 할 일을 안 하는 실수(omission)와
행위를 했지만 엉뚱한 결과를 낳는 실수(commission)가 그것이다.
엑셀에서 원하는 시트로 이동하기, 시트 이름 구하기와 하이퍼링크
핵심 요약: 원하는 시트로 이동하는 세 가지 방법
엑셀에서 원하는 시트로 이동하려면 시트 이름을 구하는 이름 정의와 HYPERLINK 함수를 조합하거나, 삽입 - 하이퍼링크를 쓰거나, VBA 한 줄을 사용할 수 있습니다.
-
시트 이름 구하기: Excel 4 매크로 함수
GET.WORKBOOK을 이름시트이름으로 정의하고INDEX함수로 시트 이름을 구합니다. -
수식으로 이동:
=HYPERLINK("#"&E60&"!a1","이동하기")로 시트의 A1 셀로 이동하는 링크를 만듭니다. - 하이퍼링크 명령: '삽입 - 링크 - 하이퍼링크'로 링크를 걸면 복잡한 수식이 필요 없지만 한꺼번에 여러 개를 만들기는 어렵습니다.
-
VBA:
Application.Goto한 줄로 드롭다운에서 선택한 시트로 이동하며, 컨트롤이나 도형과도 연결할 수 있습니다.
1. 워크시트의 이름 구하기 — Excel 4 매크로 함수
자세한 연유를 알 수는 없지만
엑셀은 워크북에 들어있는 워크시트의 이름을 알아낼 방법을 제공하지 않습니다.
아주 오래 전에 사용하던 Excel 4의 XLM macro 함수를 이용하면 되기는 합니다.
(1) "수식 - 정의된 이름 - 이름 정의"를 클릭합니다.
(2) "새 이름" 대화상자에서 "이름"과 "참조 대상"을 지정합니다.
이름: 시트이름
참조 대상: =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")
여기에서 Get.Workbook이라는 이것이
Excel 4 XLM Macro 함수라는 것입니다.
아주 오래 전(Excel 95 버전)에서 매크로는
XLM이라는 확장자 명을 가진 별도의 파일에
코드를 별도로 저장했었다고 전해지는데
이것을 XLM macro 혹은 Excel 4 macro 등의
이름으로 불렸습니다.
(여기서는 그냥 '그런 게 있군' 정도로만 이해하고
넘어가도 상관 없습니다.)
참고: 저장 형식
이렇게 Excel 4 매크로 함수를 사용한 이름은 매크로 없는 통합 문서(.xlsx)로 저장하면 동작하지 않습니다. 예제처럼 .xls 형식이나 매크로 사용 통합 문서(.xlsm)로 저장해서 사용하세요.
(3) 이렇게 정의된 이름과 Index 함수를 이용하면 시트의 이름을 구할 수 있습니다.
=INDEX(시트이름, 1)
결과: Preface
이렇게 하면 현재 워크북의 첫번째 시트 이름을 구해줍니다.
두번째, 세번째 시트 이름을 얻을려면 1 대신 2, 3, 4, 등으로 바꿔주면 됩니다.
Iferror 함수와 조합하면 좀더 완성도(?)가 높은 수식이 됩니다.
=IFERROR(INDEX(시트이름, 1),"")
2. 시트 이름은 어디에 쓸까요? — HYPERLINK 함수
자, 이쯤에서 이런 의문이 들기 시작합니다.
Excel 4 macro도 좋고, Index 함수도 좋은데, 이런 건 배워서 도대체 워디에 써먹나요?
강좌 제목이 "원하는 곳으로 이동하기"이니 아마도 그와 연관된 뭔가가 있겠지요?
예제 파일의 아래 노란색 셀을 한번씩 눌러보시기 바랍니다.
| 1 | Preface | 이동하기 |
| 2 | Workplace | 이동하기 |
| 3 | Sheet1 | 이동하기 |
| 4 | Sheet2 | 이동하기 |
| 5 | Sheet3 | 이동하기 |
| 6 | Sheet4 | 이동하기 |
| 7 | Sheet5 | 이동하기 |
어떤가요? 원하는 시트로 쉽게 이동이 되지요?
이렇게 하기 위해 사용된 수식은 이렇습니다.
=HYPERLINK("#"&E60&"!a1","이동하기")
한 셀에만 이 수식을 입력하고 나머지는 자동 채우기를 하면 되겠습니다.
참고: 시트 이름과 시트 이름 목록
예제에서 E60:E66 셀에는 =IFERROR(INDEX(시트이름,D60),"")처럼 시트 이름이 들어 있고 D60:D66에는 순번 1~7이 있습니다. 시트 이름에 공백이 있는 경우에는 이름을 작은따옴표로 감싸 =HYPERLINK("#'"&E60&"'!A1","이동하기")처럼 써야 이동합니다.
3. 삽입 - 하이퍼링크 명령으로 이동하기
각 시트의 A1 셀에는 "돌아가기"라는 글자가 있고, 그것을 클릭해도 특정한 곳으로 이동합니다.
이것은 "삽입 - 링크 - 하이퍼링크" 명령을 이용하여 하이퍼링크를 걸어준 것입니다.
이렇게 하면 복잡한 수식을 작성하지 않아도 되는 장점이 있는 반면,
수식 복사를 통해 한꺼번에 여러 개의 하이퍼링크를 만들기는 어렵습니다.
참고: '현재 문서' 링크
예제의 '돌아가기'는 파일 이름과 위치(X0513_Hyperlink.xls#Preface!A30)로 연결되어 있어 파일 이름이 바뀌면 링크가 끊길 수 있습니다. 같은 통합 문서 안에서 이동하는 링크는 하이퍼링크 대화상자의 '현재 문서' 탭에서 시트와 셀을 지정하면 파일 이름과 관계없이 유지됩니다. 또 화면의 위치(A30)는 표가 다른 자리에 있을 때 지정한 것이라 지금 예제의 표 위치와 다를 수 있습니다.
4. VBA를 이용해 이동하기
이런 방법들, 즉 Excel 4 macro나 하이퍼링크 말고도 VBA를 이용하는 방법도 있습니다.
예제 파일의 드롭다운 버튼을 클릭하여 적당한 시트 명을 선택해 보시기 바랍니다.
이 기능을 구현하기 위해 사용한 코드는 다음과 같습니다(단 한 줄!).
Sub GoToSheet()
Application.Goto Sheets(Range("이동위치").Value).Range("A1"), True
End Sub
참고: 이동위치 이름
예제에서 이름 이동위치는 Preface!$D$99를 가리키고, D99 셀에는 드롭다운의 연결 값(F99)에 해당하는 시트 이름을 구하는 =INDEX(E60:E66,F99) 수식이 들어 있습니다. 드롭다운으로 시트를 고르면 이 셀의 시트 이름으로 이동합니다.
어떤 방법을 선택할 지는 여러분의 자유입니다만,
Exceller는 개인적으로 마지막 방식을 추천하는 바입니다.
각종 컨트롤이나 도형과도 연결할 수 있고, 응용의 폭이 넓기 때문입니다.
정리 — 시트 이동 방법 비교
| 방법 | 핵심 | 특징 |
|---|---|---|
| HYPERLINK 함수 | =HYPERLINK("#"&E60&"!a1","이동하기") |
수식 복사로 한꺼번에 여러 개 만들 수 있음 |
| 삽입 - 하이퍼링크 | 링크 대상을 대화상자에서 지정 | 수식이 필요 없지만 한꺼번에 여러 개 만들기는 어려움 |
| VBA | Application.Goto Sheets(…).Range("A1"), True |
컨트롤·도형과 연결할 수 있고 응용의 폭이 넓음(필자 추천) |
자주 묻는 질문 (FAQ)
Q1. 엑셀에서 워크시트 이름을 수식으로 알아낼 수 있나요?
엑셀에는 시트 이름을 구하는 기본 함수가 없지만, Excel 4 XLM 매크로 함수 GET.WORKBOOK을 이름으로 정의하면 구할 수 있습니다. 이름 시트이름의 참조 대상을 =REPLACE(GET.WORKBOOK(1),1,FIND("]",GET.WORKBOOK(1)),"")로 정의하고 =INDEX(시트이름,1)처럼 INDEX 함수로 몇 번째 시트의 이름인지 지정합니다.
Q2. 수식으로 원하는 시트로 이동하는 링크를 만들려면 어떻게 하나요?
HYPERLINK 함수를 사용합니다. 시트 이름이 E60 셀에 있다면 =HYPERLINK("#"&E60&"!a1","이동하기")처럼 입력하면 해당 시트의 A1 셀로 이동하는 링크가 만들어지며, 한 셀에만 입력하고 나머지는 자동 채우기를 하면 됩니다.
Q3. 시트 이동을 VBA로 구현하려면 어떻게 하나요?
Application.Goto Sheets(Range("이동위치").Value).Range("A1"), True 한 줄이면 됩니다. 드롭다운 컨트롤에서 선택한 시트 이름이 이름 이동위치가 가리키는 셀에 들어 있게 해 두면, 이 코드로 선택한 시트의 A1 셀로 이동합니다.
마치며
오늘은 여기까지…