엑셀·구글시트 자동화 실험No. 168
드롭다운 목록 연결하기 상위 선택에 맞춰 항목을 바꾸는 순서
결론부터
드롭다운 목록을 서로 연결하려면 상위 항목과 하위 항목의 관계를 원본 데이터에 먼저 정리해야 합니다. 엑셀에서는 이름을 지정한 범위와 INDIRECT 함수를 연결하는 방식으로 구성할 수 있습니다. 구글시트에서는 선택값에 맞는 후보를 보조 영역에 추린 뒤 해당 범위를 하위 목록에 연결하는 방식으로 시작하면 구조를 이해하기 쉽습니다.
선택은 했는데 다음 목록이 그대로인 상황
분류에서 문구를 선택했는데 다음 칸에 식품 항목까지 함께 나타난다면 두 목록이 각각 고정된 원본을 읽고 있는 상태인지 확인합니다. 드롭다운을 나란히 만들었다는 이유만으로 두 셀이 연결되지는 않습니다. 상위 셀의 선택값이 바뀔 때 하위 목록의 원본도 달라지도록 관계를 지정해야 합니다.
하나씩 확인
목록 연결 확인
- 두 목록의 고정 원본 확인
- 상위값에 따른 원본 변경
- 분류별 품목 관계 정리
설명에 사용할 입력 영역은 B열의 분류와 C열의 품목입니다. 분류에는 문구와 식품을 두고, 문구에는 노트와 연필, 식품에는 차와 과자를 연결합니다. 이는 구조를 설명하기 위한 예시입니다. 실제 작업에서는 사용하는 항목으로 바꾸되 같은 품목이 어느 분류에 속하는지 먼저 정리합니다.
이때 원본과 입력 영역은 구분하는 편이 관리하기 쉽습니다. 원본은 항목을 추가하거나 이름을 수정하는 곳이고, 입력 영역은 준비된 후보를 선택하는 곳입니다. 입력할 때마다 원본을 함께 고치는 구조라면 목록 오류가 생겼을 때 원인을 찾기 어렵습니다. 별도 시트에 원본을 모으면 연결 관계를 살피기 편합니다.
분류 이름의 공백도 확인 대상입니다. 화면에서 비슷하게 보여도 문구 뒤에 공백이 붙은 값과 공백이 없는 값은 서로 다르게 처리될 수 있습니다. 드롭다운을 만들기 전에 분류 이름을 통일하고, 같은 항목이 중복으로 들어갔는지 살펴봅니다. 비어 있는 셀을 후보 범위에 불필요하게 포함하지 않는 것도 기본 점검입니다.
목록을 각각 만들어 보는 첫 시도
처음에는 분류 목록과 품목 목록을 따로 만들기 쉽습니다. B열에는 분류 전체를, C열에는 품목 전체를 연결하는 방식입니다. 각 셀에서 선택은 가능하지만 분류에 맞지 않는 품목도 고를 수 있습니다. 이 구조는 선택지를 제한하는 데에는 쓰이지만 두 항목의 관계까지 검사하지는 못합니다.
이렇게
엑셀 범위 준비
- 분류별 품목을 나눠 배치
- 품목 범위에서 제목 제외
- 각 범위에 분류 이름 지정
엑셀에서 연결 원리를 확인하려면 분류별 품목을 서로 다른 범위에 배치합니다. 문구에 해당하는 셀에는 노트와 연필을 넣고, 식품에 해당하는 셀에는 차와 과자를 넣습니다. 각 범위에는 문구와 식품이라는 이름을 지정합니다. 이름을 붙일 때 제목 셀까지 품목 후보에 섞이지 않도록 구분합니다.
상위 목록에 보이는 글자와 범위 이름이 맞아야 다음 연결이 성립합니다. 다만 엑셀의 범위 이름에는 공백 등 사용할 수 없는 문자가 있습니다. 설명용 예시처럼 짧은 이름은 그대로 연결하기 쉽지만, 실제 분류명이 길거나 띄어쓰기를 포함한다면 별도의 연결용 이름을 마련하는 설계가 필요합니다.
전체 품목 중에서 자유롭게 고르면 되는 입력란은 독립된 목록으로도 충분합니다. 반면 분류와 품목의 조합이 정해진 입력란은 연결된 목록이 적합합니다. 어느 방식이 더 복잡한지보다 잘못된 조합을 막아야 하는지를 기준으로 고릅니다. 관계가 필요 없는 곳까지 연결하면 수정할 부분만 늘어납니다.
선택값을 원본으로 넘기는 두 번째 시도
엑셀에서는 B2에 분류를 선택하도록 만든 다음 C2의 데이터 유효성 검사에서 목록을 선택하고 원본에 =INDIRECT($B2)를 넣는 방식으로 연결합니다. B2에 문구가 들어 있으면 문구라는 이름의 범위를 읽는 구조입니다. 이 예시는 상위 선택값과 지정한 범위 이름이 일치한다는 조건을 전제로 합니다.
$B2에서 달러 기호는 참조할 열을 B열로 고정합니다. 행 번호에는 달러 기호가 없으므로 같은 설정을 아래 행으로 복사하면 각 행의 분류 셀을 참조하도록 구성할 수 있습니다. 반대로 $B$2로 지정하면 아래 행에서도 계속 B2를 읽습니다. 여러 행에서 목록이 똑같이 움직인다면 참조 방식부터 살펴봅니다.
구글시트에서는 이름만 보고 같은 설정을 그대로 옮기기보다 보조 영역을 두는 방식으로 접근합니다. 원본 A열에 분류, B열에 품목을 두고 FILTER 함수로 선택한 분류의 품목만 추립니다. 이어서 하위 드롭다운의 범위에 그 결과 영역을 지정합니다. 수식으로 후보를 만드는 부분과 후보를 선택하는 부분을 나누는 구성입니다.
짚고 가기
구글시트 후보 연결
- FILTER로 분류별 품목 추림
- 보조 영역에 후보 생성
- 결과 범위를 하위 목록에 연결
예를 들어 원본 시트의 A2:A50이 분류이고 B2:B50이 품목이라면, 입력 시트의 빈 영역에 =IFERROR(FILTER(원본!B2:B50,원본!A2:A50=B2),"")를 넣어 후보를 만들 수 있습니다. 여기서 B2는 입력 시트의 상위 선택 셀입니다. 숫자는 예시 범위의 행 번호이며 실제 원본의 길이에 맞게 조정합니다.
연결이 맞는지는 상위 선택을 바꿨을 때 하위 후보가 달라지는지로 확인합니다
후보가 바뀌고 입력도 맞는 쪽으로 정리
구글시트의 보조 영역에는 FILTER 결과가 펼쳐질 공간이 필요합니다. 결과가 나올 셀에 다른 값이 있으면 후보 생성이 막힐 수 있습니다. 하위 목록이 비어 있을 때에는 드롭다운 설정만 반복해서 바꾸기보다 보조 영역에 예상한 품목이 실제로 나타나는지부터 확인합니다. 후보가 생성되어야 연결 상태도 판단할 수 있습니다.
작업 순서는 원본, 상위 선택, 후보 생성, 하위 선택으로 이어집니다. 엑셀은 지정한 이름이 올바른 범위를 가리키는지 확인하고, 구글시트는 보조 영역의 결과가 원본 관계와 일치하는지 확인합니다. 설정을 한꺼번에 늘리기 전에 입력 한 행에서 관계를 확인하면 오류가 생긴 지점을 좁히기 쉽습니다.
- 원본에서 분류와 품목의 대응 관계를 확인합니다
- 상위 셀에 분류를 선택하는 목록을 만듭니다
- 선택한 분류에 맞는 하위 후보를 연결합니다
- 상위 선택을 바꾸며 후보와 기존 입력값을 확인합니다
여기서 후보가 바뀌는 것과 이미 선택한 값이 지워지는 것은 별개의 동작입니다. 문구에서 노트를 고른 뒤 분류를 식품으로 바꿔도 기존 셀의 노트가 남을 수 있습니다. 목록 연결만으로 이전 선택까지 자동으로 정리된다고 가정하면 안 됩니다. 현재 분류에 속하지 않는 입력값이 남는 상황을 따로 확인해야 합니다.
입력값 점검 상황
| 상황 | 확인할 점 |
|---|---|
| 상위 분류 변경 | 이전 품목 잔존 |
| 목록 밖 직접 입력 | 거부 또는 경고 |
| 셀에 화살표 표시 | 입력 검사 여부 |
원본에 없는 값을 직접 입력했을 때의 처리도 점검합니다. 잘못된 입력을 거부할지 경고만 할지는 파일의 사용 목적에 맞춰 정합니다. 후보 선택을 엄격하게 관리해야 하는 문서라면 목록 밖의 값이 그대로 저장되는지 확인합니다. 셀에 화살표가 나타나는 것만으로 입력 검사가 끝났다고 판단하지 않습니다.
다음에는 행 확장과 이전 값 처리를 변경
입력 한 행에서 연결이 확인되면 여러 행으로 늘리는 문제를 검토합니다. 엑셀에서는 각 행의 참조가 자기 행을 읽는지 살펴봅니다. 구글시트에서 하나의 보조 영역을 여러 입력 행이 함께 사용하면 서로 다른 분류를 동시에 다루기 어려울 수 있습니다. 앞의 예시는 한 입력 행을 기준으로 이해하는 구성입니다.
구글시트에서 행마다 다른 분류를 선택해야 한다면 후보를 펼칠 보조 영역도 행별로 구분하는 설계를 검토합니다. 입력 행이 계속 늘어나는 문서에서는 보조 영역을 얼마나 관리할 수 있는지도 판단 기준입니다. 한 셀에서 목록이 바뀌는 구성과 여러 행을 동시에 유지하는 구성은 확인해야 할 범위가 다릅니다.
원본에 새 품목을 넣는 상황도 별도로 확인합니다. 엑셀에서 이름을 지정한 범위가 고정되어 있다면 범위 밖에 추가한 값은 후보에 나타나지 않을 수 있습니다. 구글시트도 FILTER가 읽는 범위 밖에 데이터를 넣으면 결과에 포함되지 않습니다. 추가한 값이 들어오는 경계를 확인하고 원본 범위의 관리 기준을 정합니다.
상위 값을 변경한 뒤 남은 하위 값을 처리하는 방법에는 다시 선택하도록 안내하는 방식과 자동으로 비우는 방식이 있습니다. 자동으로 비우려면 목록 설정 외의 처리가 필요합니다. 엑셀의 매크로나 구글시트의 스크립트를 검토한다면 실행 조건과 편집 권한을 함께 살펴봅니다. 목록 구성 단계와 자동 삭제 단계는 구분해서 설계합니다.
엑셀·구글시트 자동화 실험에서 이 주제를 정리하는 기준은 후보 변경, 기존 값 처리, 원본 확장입니다. 먼저 선택에 따라 알맞은 후보가 나타나는지 확인하고, 다음으로 이전 입력이 남는 상황을 점검합니다. 마지막으로 원본 항목과 입력 행이 늘어날 때에도 같은 관계를 유지하는지 살피면 다음 수정 범위가 분명해집니다.