
StackOverflow에서 이것을 요청했고 여기로 리디렉션되었습니다. 중복에 대해 사과드립니다.
Sheet2의 동적 명명된 범위에서 해당 입력 범위 속성을 통해 채워지는 Sheet1의 콤보 상자가 있는 Excel 워크시트가 있습니다. 잘 작동하며 VBA가 필요하지 않습니다.
Sheet2의 내 데이터는 실제로 Excel 테이블에 있습니다(모든 데이터는 외부 데이터 소스가 아닌 XLS 파일에 있음). 명확성을 위해 콤보 상자의 입력 범위에 대해 구조화된 테이블 참조를 사용하고 싶었지만 작동하는 구문을 찾을 수 없는 것 같습니다(예: myTable[[#Data],[myColumn3]]).
콤보 상자가 구조화된 테이블 참조를 허용한다는 표시는 찾을 수 없지만 허용하지 않는 이유는 알 수 없습니다.
따라서 두 부분으로 구성된 질문: 1. 콤보 상자 입력 범위 속성에서 테이블 열 참조를 사용할 수 있습니까(VBA를 사용하지 않음) 및 2. 어떻게?
답변1
나는 이것이 꽤 오래된 질문이라는 것을 알고 있지만 방금 같은 질문을 해결하려고했던 것처럼 누군가 우연히 그것을 발견했을 경우를 대비하여 ScottieB와 마찬가지로 나 역시 dav의 답변을 나에게 적합하게 만들 수 없었습니다. Excel 2013에서 해결한 방법은 다음과 같습니다.
콤보 상자에 대한 수직 선택 목록을 만듭니다. 테이블에는 아직 제목이 없고(아직 공간을 남겨두세요) 드롭다운에 필요한 모든 항목이 포함된 열만 있습니다.
일반 Sheet1!$A$1:$A$2 표기법을 사용하여 목록 이름을 생성/정의합니다.
입력 범위에 대해 방금 만든 이름을 사용하여 콤보 상자 양식 컨트롤을 삽입합니다.
여태까지는 그런대로 잘됐다. 콤보 상자는 작동하지만 수직 목록의 하단에 추가된 새 옵션(이름이 지정된 범위 바로 아래라도)은 드롭다운 목록에 추가되지 않습니다. 드롭다운의 기반이 되는 명명된 범위는 동적으로 확장되지 않습니다.
이제 좋은 점입니다.
- 세로 목록으로 돌아가서(이름이 지정된 범위 주위에 추가한 항목을 모두 지워서 2단계에서 떠난 것과 동일하게 하세요) 그 위에 제목을 추가하세요. 어떤 텍스트라도 가능합니다. 이는 선택 항목 목록을 식별하는 레이블일 뿐입니다.
(아니면 하지 마십시오! 허용하는 경우 Excel이 다음 단계에서 하나를 추가합니다.)
- 제목을 선택한 상태에서 Ctrl+T 또는 삽입 | 테이블. Excel에서 찾은 범위를 수락하고 '내 테이블에 머리글이 있습니다' 상자를 확인한 다음 확인을 클릭하세요. 원하는 경우 테이블 이름을 변경할 수 있습니다. 상관없습니다.
(참고: 머리글을 추가하지 않은 경우 Excel에서 머리글을 만들도록 '내 테이블에 머리글이 있습니다.' 확인란을 선택하지 마세요.)
이제 - 원래 명명된 범위가 이제 테이블 정의의 일부이기 때문에 - 세로 목록의 맨 아래에 새 행을 추가하면 테이블 정의가 자동으로 확장될 뿐만 아니라 원래 명명된 범위의 정의도 확장됩니다. 따라서 새 옵션이 나타납니다. 콤보 상자의 선택 목록에서 마법!
답변2
아직 테이블을 생성하지 않은 경우 XL 2013에 관한 Nick의 답변은 괜찮습니다.
그러나 그보다 더 간단합니다. 테이블 열을 가리키는 이름을 정의합니다. 그런 다음 이름을 가리키는 다른 이름을 만듭니다. 입력 범위에서 두 번째 이름을 사용할 수 있으며 제대로 작동합니다.
답변3
Excel 2010에서는 이 작업을 수행할 수 있지만 프로세스는 2단계입니다.
- 테이블 구조 참조(예: myrange=mytable[myColumn3])를 사용하여 명명된 범위를 만듭니다.
- 명명된 범위를 컨트롤의 입력 범위로 사용합니다.
그리고 예상한 대로 제어 필드는 목록 변경 사항으로 업데이트됩니다. 왜 컨트롤에서 참조를 직접 사용할 수 없는지 잘 모르겠습니다. 하지만 Excel에 대해서는 아직도 이해하지 못하는 부분이 많습니다.
편집: 이름 관리자의 테이블 참조에서 @ 기호를 가져오는 것을 잊지 마십시오. 그렇지 않으면 유효성 검사 세트에 해당하는 행의 값만 가져옵니다(예: [@myColumn3]이 아닌 [myColumn3]).