여러분이 사용하고 계신 브라우저는 HTML5를 지원하지 않기 때문에 몇몇 요소가 제대로 보이도록 JScript를 사용하고 있습니다. 하지만 여러분의 브라우저 설정에서 스크립트 기능이 꺼져있으므로, 현재 페이지를 제대로 확인하시려면 스크립트 기능을 켜주셔야 합니다. Excel - 매크로 - 특정 셀의 값에 따라 선택 옵션이 변경되게

Excel – 매크로 – 특정 셀의 값에 따라 선택 옵션이 변경되게

2개월전 작성

종속 드롭다운 리스트

Excel 종속 드롭다운 리스트는 첫 번째 셀에서 선택한 값에 따라 두 번째 셀의 선택 옵션이 자동으로 변경되는 기능이다.

매일 데이터를 입력하는 작업에서 오류를 줄이고 작업 효율을 높이려면 이 기능이 꼭 필요하다.

Excel VBA 매크로를 활용해 종속 드롭다운을 구현하는 방법을 단계별로 알아보자.

목차

종속 드롭다운

Excel 종속 드롭다운은 하나의 셀 선택이 다른 셀의 드롭다운 옵션을 결정하는 기능이다.

예를 들어 ‘국가’ 셀에서 ‘한국’을 선택하면 ‘도시’ 셀에는 ‘서울, 부산, 인천’ 등이 표시되고, ‘일본’을 선택하면 ‘도쿄, 오사카, 교토’ 등이 표시되는 방식이다.

이 기능의 가장 큰 장점은 데이터 입력 시 발생하는 오류를 크게 줄일 수 있다는 점이다.
사용자는 정해진 옵션 중에서만 선택할 수 있으므로 오타나 유효하지 않은 데이터 입력을 방지할 수 있다.

또한 사용자 경험 측면에서도 큰 이점이 있다.
관련된 옵션만 보여주기 때문에 사용자가 혼란 없이 빠르게 데이터를 입력할 수 있다.

Excel 종속 드롭다운 리스트를 구현하는 방법은 크게 두 가지가 있다.

첫째는 INDIRECT 함수를 사용하는 방법이다.
이는 추가 코드 없이 구현할 수 있지만, 복잡한 종속 관계나 동적인 데이터 처리에는 한계가 있다.

둘째는 VBA 매크로를 사용하는 방법이다.
약간의 코딩 지식이 필요하지만, 더 강력하고 유연한 종속 드롭다운을 구현할 수 있다.

이 글에서는 VBA 매크로를 활용한 방법에 중점을 두어 설명할 것이다.

데이터 구조 설계

Excel 종속 드롭다운을 효과적으로 구현하기 위해서는 먼저 적절한 데이터 구조를 설계하는 것이 중요하다.

가장 기본적인 방법은 별도의 워크시트에 모든 데이터를 구조화하여 정리하는 것이다.
이를 통해 데이터 관리가 용이하고, 향후 옵션 추가나 수정이 필요할 때도 쉽게 대응할 수 있다.

새 워크시트를 만들고 ‘DataSheet’라는 이름을 부여해보자.
이 시트는 모든 드롭다운 옵션을 관리하는 역할을 한다.

A열에는 주 드롭다운(상위 드롭다운)의 모든 옵션을 입력한다.
예를 들어, A1에 ‘한국’, A2에 ‘일본’, A3에 ‘중국’을 입력한다.

B열부터는 각 주 옵션에 해당하는 종속 옵션을 동일한 행에 나열한다.
예를 들어, B1:D1에 ‘서울’, ‘부산’, ‘인천’을, B2:D2에 ‘도쿄’, ‘오사카’, ‘교토’를, B3:D3에 ‘베이징’, ‘상하이’, ‘광저우’를 입력한다.

이제 각 데이터 범위에 이름을 정의해야 한다.

먼저 A1:A3 범위를 선택하고 ‘수식’ 탭의 ‘이름 관리자’를 클릭한다.
‘새로 만들기’를 클릭하고 이름을 ‘MainList’로 입력한 후 확인한다.

다음으로 각 종속 옵션 범위에도 이름을 부여한다.
B1:D1 범위를 선택하고 이름을 ‘Sub_한국’으로, B2:D2 범위는 ‘Sub_일본’으로, B3:D3 범위는 ‘Sub_중국’으로 정의한다.

이렇게 이름을 정의할 때 주목할 점은 종속 리스트의 이름 형식이다.
‘Sub_’ 접두사 뒤에 주 옵션 값을 붙이는 이 명명 규칙은 나중에 VBA 코드에서 동적으로 참조하기 위함이다.

데이터 범위가 정의되었으면, 각 범위에 빈 셀이 없는지 확인하는 것이 좋다.
빈 셀이 있으면 드롭다운 리스트에 빈 옵션이 표시될 수 있다.

기본 설정

Excel 종속 드롭다운 리스트의 첫 단계는 기본 드롭다운 메뉴를 설정하는 것이다.

새 워크시트를 만들고 이름을 ‘InputSheet’로 지정한다.
이 시트는 사용자가 실제로 데이터를 입력하는 인터페이스 역할을 한다.

C1 셀에 ‘국가:’라는 레이블을, D1 셀에는 주 드롭다운을 배치할 것이다.
C2 셀에는 ‘도시:’라는 레이블을, D2 셀에는 종속 드롭다운을 배치한다.

이제 D1 셀에 주 드롭다운을 설정해보자.

D1 셀을 선택하고 ‘데이터’ 탭에서 ‘데이터 유효성 검사’를 클릭한다.
‘설정’ 탭에서 ‘허용’ 드롭다운을 ‘목록’으로 선택한다.

‘원본’ 필드에 ‘=MainList’를 입력한다.
이는 앞서 정의한 ‘MainList’ 범위의 값(한국, 일본, 중국)을 드롭다운 옵션으로 사용하겠다는 의미다.

‘오류 메시지’ 탭을 클릭하고 ‘제목’에 ‘국가 선택’을, ‘오류 메시지’에 ‘유효한 국가를 목록에서 선택하세요’를 입력한 후 확인한다.

이제 D1 셀에는 드롭다운 화살표가 나타나고, 클릭하면 ‘한국’, ‘일본’, ‘중국’ 옵션을 선택할 수 있다.

D2 셀에도 임시로 기본 드롭다운을 설정해줄 수 있다.
하지만 이 드롭다운은 나중에 VBA 매크로를 통해 동적으로 변경될 것이므로, 지금은 빈 상태로 두어도 무방하다.

이제 기본적인 드롭다운 설정이 완료되었으니, VBA 매크로를 작성하여 두 드롭다운 간의 종속 관계를 구현해보자.

VBA 작성

Excel 종속 드롭다운 리스트를 동적으로 구현하기 위해 VBA 매크로를 작성해보자.

먼저 Alt + F11 키를 눌러 VBA 편집기를 연다.
왼쪽의 프로젝트 탐색기에서 ‘InputSheet’를 더블클릭하여 코드 창을 연다.

아래 코드를 입력하여 셀 변경 이벤트를 처리하는 프로시저를 작성한다.


Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next

If Target.Address = "$D$1" Then
Application.EnableEvents = False

Dim MainValue As String
MainValue = Range("D1").Value

If MainValue <> "" Then
With Range("D2").Validation
.Delete
.Add Type:=xlValidateList, AlertStyle:=xlValidAlertStop, _
Operator:=xlBetween, Formula1:="=Sub_" & MainValue
.InCellDropdown = True
.InputTitle = "도시 선택"
.ErrorTitle = "유효하지 않은 선택"
.InputMessage = MainValue & "의 도시를 선택하세요"
.ErrorMessage = "목록에서 유효한 도시를 선택하세요"
End With

Range("D2").Value = ""
End If

Application.EnableEvents = True
End If

On Error GoTo 0
End Sub

사용된 코드 설명
Private Sub Worksheet_Change(ByVal Target As Range)
:
워크시트의 셀이 변경될 때 자동으로 실행되는 이벤트 프로시저다.
On Error Resume Next
:
오류가 발생해도 코드 실행을 계속하도록 한다.
If Target.Address = “$D$1” Then
:
변경된 셀이 D1 셀(국가 선택 셀)인지 확인한다.
Application.EnableEvents = False
:
코드 실행 중 추가 이벤트가 발생하는 것을 방지한다.
MainValue = Range(“D1”).Value
:
D1 셀의 값(선택된 국가)을 변수에 저장한다.
With Range(“D2”).Validation
:
D2 셀(도시 선택 셀)의 데이터 유효성 검사 설정을 시작한다.
.Delete
:
기존 데이터 유효성 검사 설정을 삭제한다.
.Add Type:=xlValidateList, … Formula1:=”=Sub_” & MainValue
:
선택된 국가에 해당하는 도시 목록을 참조하는 새 데이터 유효성 검사를 추가한다.
Range(“D2”).Value = “”
:
기존에 선택된 도시가 있다면 초기화한다.
Application.EnableEvents = True
:
이벤트 처리를 다시 활성화한다.
On Error GoTo 0
:
오류 처리를 원래 상태로 복원한다.

이 코드는 D1 셀(국가)의 값이 변경될 때마다 D2 셀(도시)의 드롭다운 옵션을 자동으로 업데이트한다.

예를 들어, D1에서 ‘한국’을 선택하면 D2에는 ‘Sub_한국’ 범위에 정의된 도시들(서울, 부산, 인천)만 표시된다.
만약 D1의 값을 ‘일본’으로 변경하면 D2의 드롭다운은 자동으로 ‘Sub_일본’ 범위의 도시들(도쿄, 오사카, 교토)로 업데이트된다.

코드 작성을 완료한 후 VBA 편집기를 닫고, 반드시 통합 문서를 Excel 매크로 지원 파일 형식(.xlsm)으로 저장해야 한다.
일반 Excel 파일(.xlsx)로 저장하면 매크로가 삭제되어 기능이 작동하지 않는다.

이제 D1 셀의 값을 변경해보면, D2 셀의 드롭다운 옵션이 자동으로 업데이트되는 것을 확인할 수 있다.

매크로 디버깅

Excel 종속 드롭다운 리스트 구현 중 발생할 수 있는 일반적인 오류와 해결 방법을 알아보자.

가장 흔한 오류는 ‘이름이 정의되지 않았습니다’라는 메시지다.
이 오류는 코드에서 참조하는 이름(예: ‘Sub_한국’)이 실제로 정의되어 있지 않을 때 발생한다.

이 문제를 해결하려면 ‘수식’ 탭의 ‘이름 관리자’를 열어 필요한 모든 이름이 올바르게 정의되어 있는지 확인한다.
주 목록(MainList)과 모든 종속 목록(Sub_한국, Sub_일본 등)이 모두 존재하고 올바른 범위를 참조하는지 확인해야 한다.

두 번째 흔한 오류는 종속 드롭다운이 전혀 업데이트되지 않는 문제다.
이는 대개 Worksheet_Change 이벤트가 제대로 작동하지 않기 때문이다.

이 문제를 해결하기 위해 다음 사항을 확인한다.

첫째, 통합 문서가 .xlsm 형식으로 저장되었는지 확인한다.
둘째, Excel의 매크로 보안 설정에서 매크로가 활성화되어 있는지 확인한다.
셋째, VBA 코드가 올바른 워크시트 모듈에 작성되었는지 확인한다.

코드를 디버깅하는 방법도 알아두면 좋다.

VBA 편집기에서 F8 키를 사용하면 코드를 한 줄씩 실행하며 문제를 찾을 수 있다.
또한 중요한 변수 앞에 Debug.Print 명령을 추가하여 값을 즉시 창에 출력할 수도 있다.

예를 들어, 다음과 같이 코드를 수정할 수 있다.


MainValue = Range("D1").Value
Debug.Print "Selected Value: " & MainValue
Debug.Print "Reference Name: Sub_" & MainValue
사용된 코드 설명
MainValue = Range(“D1”).Value
:
D1 셀의 값을 변수에 저장한다.
Debug.Print “Selected Value: ” & MainValue
:
선택된 값을 즉시 창에 출력한다.
Debug.Print “Reference Name: Sub_” & MainValue
:
참조할 이름을 즉시 창에 출력한다.

마지막으로, 매크로 보안 설정 때문에 코드가 실행되지 않는 경우도 있다.

이 문제를 해결하려면 Excel 파일을 열 때 ‘콘텐츠 사용’ 버튼을 클릭하거나, ‘파일 > 옵션 > 보안 센터 > 보안 센터 설정 > 매크로 설정’에서 적절한 수준으로 보안 설정을 조정한다.

활용 사례

Excel 종속 드롭다운 리스트는 다양한 실무 상황에서 유용하게 활용될 수 있다.

첫 번째 활용 사례는 제품 주문 양식이다.

첫 번째 드롭다운에서 제품 카테고리(전자기기, 의류, 식품 등)를 선택하면, 두 번째 드롭다운에는 해당 카테고리에 속한 제품들만 표시된다.
예를 들어 ‘전자기기’를 선택하면 ‘노트북’, ‘스마트폰’, ‘태블릿’이 표시되고, ‘의류’를 선택하면 ‘셔츠’, ‘바지’, ‘모자’가 표시되는 방식이다.

이를 활용하면 주문 입력 오류를 줄이고, 주문 처리 시간을 단축할 수 있다.

두 번째 활용 사례는, 다단계 필터링 시스템이다.

첫 번째 드롭다운에서 ‘연도’를 선택하면 두 번째 드롭다운에 해당 연도의 ‘분기’가 표시되고, 세 번째 드롭다운에 해당 분기의 ‘월’이 표시되는 방식으로 확장할 수 있다.

이러한 다단계 필터링은 대용량 데이터를 분석할 때 특히 유용하다.
사용자는 단계적으로 데이터를 필터링하여 원하는 정보를 쉽게 찾을 수 있다.

세 번째 활용 사례는 설문조사나 데이터 수집 양식이다.

예를 들어, 첫 번째 질문에서 ‘예’를 선택하면 특정 후속 질문들이 표시되고, ‘아니오’를 선택하면 다른 질문들이 표시되는 방식이다.

이를 통해 응답자에게 관련 질문만 제시함으로써 설문 경험을 개선하고, 데이터 수집의 정확성을 높일 수 있다.

더 고급 활용으로는 종속 드롭다운을 다른 Excel 기능과 결합하는 것이다.

예를 들어, 사용자가 제품을 선택하면 자동으로 해당 제품의 가격, 재고 상태, 할인율 등이 다른 셀에 표시되도록 할 수 있다.
또한 VLOOKUP이나 INDEX-MATCH 함수와 결합하여 더 복잡한 데이터 검색 시스템을 구현할 수도 있다.

이러한 다양한 활용을 통해 Excel 문서를 더 사용자 친화적으로 만들고, 데이터 입력 및 분석 프로세스를 최적화할 수 있다.

 

Excel 종속 드롭다운 리스트는 데이터 입력의 정확성을 높이고 작업 효율성을 크게 향상시키는 강력한 기능이다.

INDIRECT 함수를 사용한 간단한 방법부터 VBA 매크로를 활용한 고급 기법까지, 업무 요구사항에 맞는 최적의 방법을 선택하여 구현할 수 있다.

이제 배운 내용을 바탕으로 직접 종속 드롭다운을 만들어보고, 일상 업무에 적용하여 업무 효율성을 한 단계 높여보자.

Mingg`s Diary
밍구
공부 목적 블로그