- 최초 작성일: 2001-10-12
- 최종 수정일: 2026-09-29
- 조회수: 20 회
- 작성자: 권현욱 (엑셀러)
- 강의 제목: 동적 이름정의 응용예제 하나
들어가기 전에
오래 전 엑셀 파일로 진행하던 강의를 웹 글로 복원한 것이라, "버튼을 눌러보세요"처럼 엑셀에서 직접 조작하라는 표현이 남아 있을 수 있습니다. 결과는 본문의 그림이나 표로 확인하실 수 있으며, 현재와 맞지 않는 내용은 보완하되 전반적인 스타일은 당시의 갬성(?)을 유지했습니다.
질문 하나
안녕하세요?
질문 하나 드릴께요.
드롭다운 박스를 하나 그리고 내용을 연결했는데 리스트가 수시로 변합니다.
리스트가 늘어날 때마다 드롭다운 박스에도 자동으로 영향을 주도록 할 수
있을까요?...
아주 중요한 질문을 하셨습니다. 데이터는 수시로 변경이 되므로 그때 그때마다 연결된 모든 것들을 Updating 할 필요가 있습니다. 예제를 보도록 하지요.
동적 이름정의 응용예제 하나
핵심 요약
- 목록의 항목 수가 바뀔 때마다 콤보박스의 입력 범위를 다시 지정하지 않도록 동적 이름을 만들 수 있습니다.
- OFFSET과 COUNTA를 조합해 데이터가 늘어나거나 줄어드는 범위를 자동으로 참조하는 이름을 정의합니다.
- 양식 도구 모음의 콤보박스 입력 범위에 이 이름을 지정하면 목록 변화가 컨트롤에도 자동 반영됩니다.
'양식' 도구 모음에 있는 '콤보박스' 아이콘을 누른 다음 두 개의 콤보박스를 만들었습니다. 이 때 반드시 '양식' 도구 모음의 콤보박스 아이콘을 클릭해야지 '컨트롤' 도구 모음의 그것을 선택하지 않도록 주의하세요! 이 두 개의 도구 모음은 아주 비슷하게 생겨먹어서 초보자들을 항상 헷갈리게 만듭니다. 하지만 생긴 것은 비슷하지만 기능은 전혀 다릅니다.
| Static | Dynamic |
강동 강서 강남
강북 인천 수원
콤보 박스를 적당한 위치에 하나 그린 다음 오른쪽 마우스 버튼을 클릭해 보면 '컨트롤 서식' 대화 상자가 나타납니다. '컨트롤' 탭에서 '입력 범위' 항목을 한번 클릭한 다음 Source 데이터가 들어있는 A27:A32 영역을 마우스로 드래그하면 해당 영역이 자동으로 '입력 범위' 란에 들어갑니다.
이제 콤보 박스를 클릭해 보세요. 리스트들이 주욱 나타나지요? 위의 두 콤보 박스에서 Static을 클릭하든 Dynamic을 클릭하든 결과는 마찬가지로 아래와 같이 나타날 것입니다.
그런데 입력할 지역이 늘어났다고 가정을 해 보도록 하지요. 예를 들어 A33 셀에 '춘천'을 입력한 다음 두 개의 콤보 박스를 번갈아 눌러 보세요.
어떤 차이점이 있습니까? Static 즉, 정적 연결된 콤보 박스는 수원까지만 나오고 새로 입력한 데이터는 나타나지 않는 반면, Dynamic 그러니까 동적으로 연결된 콤보 박스는 새로 입력된 데이터도 나타나지요?
여기까지 설명을 드리면, '아, 오늘 무슨 강좌를 하려는 지 알겠다!'하고 무릎을 치는 분은 그동안 열심히 강좌를 쫓아오신 분들입니다. 그렇지 않고 눈만 멀뚱거리며 애꿎은 먼 산만 흘겨 보시는 분은 갈 길이 좀 먼 분입니다. ^^
이처럼 '동적 이름정의'를 사용하려면 두 가지 중요한 사실을 알고 있어야 합니다. 먼저, Offset 함수의 사용법을 이해하고 있어야 하고, 또 한 가지는 수식에 이름을 지을 줄 알아야 합니다. Offset 함수에 대해서는 지난 강좌(X0024, 143 등)를 살펴보시기 바랍니다. Exceller의 책을 갖고 계시는 분은 262~263 쪽을 참고하세요.
셀(Range 오브젝트)이나 개체(도형)에 이름을 짓는 것이 아니고 수식에 이름을 짓는다? 좀 생소하지요? 하지만 이것도 예전에 한두번은 설명드린 기억이 납니다. Dynamic Chart를 작성할 때 소개된 개념이지요. 수식에 이름을 짓는 방법은 이렇습니다.
(1) '삽입-이름-정의' 메뉴를 선택합니다.
(2) '이름 정의' 대화상자에서 수식 이름을 입력하고(여기서는 Source라고 주었습니다), '참조 대상' 항목에 필요한 수식을 입력합니다.
(3) Offset 함수를 사용하여 위와 같은 수식을 작성하면 참조 영역의 범위가 Dynamic 하게 변하게 됩니다. CountA라는 함수는 지정한 영역 내에서 데이터가 입력된 셀이 몇 개인지를 카운팅 해 주는 함수라는 것은 알고 계실테고… Offset이라는 함수는 어떤 셀을 기준으로 행/열 방향으로 지정한 위치만큼 떨어진 영역에 있는 데이터를 지정한 행/열만큼 가져다 주는 함수입니다.
Offset 함수 형식
=OFFSET(대상 셀, 행 방향 이동 수, 열 방향 이동 수, 행 방향 취할 값, 열 방향 취할 값)
(4) 콤보 박스를 오른쪽 마우스 버튼으로 클릭하고 '입력 범위' 항목에 Source라는 이름을 입력합니다.
아시겠지요? 이번 강좌를 완전히 내 것으로 만들면 초보님들의 내공은 한단계 상승합니다.
오늘은 여기까지…
정리 — 동적 이름정의 응용예제 하나
| 구분 | 내용 |
|---|---|
| 이름 정의 | 삽입 - 이름 - 정의에서 Source 라는 이름 지정 |
| 참조 대상 수식 | OFFSET 함수와 COUNTA 함수 조합 (수식은 위 그림 참고) |
| 콤보박스 종류 | 양식 도구 모음의 콤보박스 (컨트롤 도구 모음과 구분) |
| 입력 범위 | 컨트롤 서식의 입력 범위에 Source 입력 |
| 정적 연결과의 차이 | 고정 범위(A27:A32)는 새 항목이 안 보이고 동적 이름은 새 항목도 표시 |
자주 묻는 질문 (FAQ)
Q1. 정적 연결과 동적 연결은 무엇이 다른가요?
정적 연결은 입력 범위를 A27:A32처럼 고정해 새로 입력한 항목이 나타나지 않습니다. 동적 연결은 이름 수식으로 범위가 자동으로 늘어나 새 항목도 나타납니다.
Q2. 동적 이름은 어떻게 만드나요?
삽입 - 이름 - 정의에서 이름을 입력하고 참조 대상 항목에 OFFSET과 COUNTA를 이용한 수식을 입력합니다. 이 강의에서는 Source라는 이름을 사용했습니다.
Q3. 어떤 도구 모음의 콤보박스를 써야 하나요?
양식 도구 모음의 콤보박스를 사용해야 합니다. 컨트롤 도구 모음의 콤보박스는 생김새가 비슷하지만 기능이 전혀 다릅니다.
마치며
OFFSET 함수와 이름 정의를 익혀 두면 데이터가 바뀌어도 자동으로 따라가는 목록을 만들 수 있습니다. VBA에 대한 기초 지식을 공부하실 분은 아이엑셀러 닷컴 사이트 상단 메뉴에서 [Excel 강의] - [Excel 입문]을 먼저 보시면 이해하기 쉽습니다.