ComboBox 입력 범위 속성에서 Excel 테이블 열 사용

ComboBox 입력 범위 속성에서 Excel 테이블 열 사용

StackOverflow에서 이것을 요청했고 여기로 리디렉션되었습니다. 중복에 대해 사과드립니다.

Sheet2의 동적 명명된 범위에서 해당 입력 범위 속성을 통해 채워지는 Sheet1의 콤보 상자가 있는 Excel 워크시트가 있습니다. 잘 작동하며 VBA가 필요하지 않습니다.

Sheet2의 내 데이터는 실제로 Excel 테이블에 있습니다(모든 데이터는 외부 데이터 소스가 아닌 XLS 파일에 있음). 명확성을 위해 콤보 상자의 입력 범위에 대해 구조화된 테이블 참조를 사용하고 싶었지만 작동하는 구문을 찾을 수 없는 것 같습니다(예: myTable[[#Data],[myColumn3]]).

콤보 상자가 구조화된 테이블 참조를 허용한다는 표시는 찾을 수 없지만 허용하지 않는 이유는 알 수 없습니다.

따라서 두 부분으로 구성된 질문: 1. 콤보 상자 입력 범위 속성에서 테이블 열 참조를 사용할 수 있습니까(VBA를 사용하지 않음) 및 2. 어떻게?

답변1

나는 이것이 꽤 오래된 질문이라는 것을 알고 있지만 방금 같은 질문을 해결하려고했던 것처럼 누군가 우연히 그것을 발견했을 경우를 대비하여 ScottieB와 마찬가지로 나 역시 dav의 답변을 나에게 적합하게 만들 수 없었습니다. Excel 2013에서 해결한 방법은 다음과 같습니다.

  1. 콤보 상자에 대한 수직 선택 목록을 만듭니다. 테이블에는 아직 제목이 없고(아직 공간을 남겨두세요) 드롭다운에 필요한 모든 항목이 포함된 열만 있습니다.

  2. 일반 Sheet1!$A$1:$A$2 표기법을 사용하여 목록 이름을 생성/정의합니다.

  3. 입력 범위에 대해 방금 만든 이름을 사용하여 콤보 상자 양식 컨트롤을 삽입합니다.

여태까지는 그런대로 잘됐다. 콤보 상자는 작동하지만 수직 목록의 하단에 추가된 새 옵션(이름이 지정된 범위 바로 아래라도)은 드롭다운 목록에 추가되지 않습니다. 드롭다운의 기반이 되는 명명된 범위는 동적으로 확장되지 않습니다.

이제 좋은 점입니다.

  1. 세로 목록으로 돌아가서(이름이 지정된 범위 주위에 추가한 항목을 모두 지워서 2단계에서 떠난 것과 동일하게 하세요) 그 위에 제목을 추가하세요. 어떤 텍스트라도 가능합니다. 이는 선택 항목 목록을 식별하는 레이블일 뿐입니다.

(아니면 하지 마십시오! 허용하는 경우 Excel이 다음 단계에서 하나를 추가합니다.)

  1. 제목을 선택한 상태에서 Ctrl+T 또는 삽입 | 테이블. Excel에서 찾은 범위를 수락하고 '내 테이블에 머리글이 있습니다' 상자를 확인한 다음 확인을 클릭하세요. 원하는 경우 테이블 이름을 변경할 수 있습니다. 상관없습니다.

(참고: 머리글을 추가하지 않은 경우 Excel에서 머리글을 만들도록 '내 테이블에 머리글이 있습니다.' 확인란을 선택하지 마세요.)

이제 - 원래 명명된 범위가 이제 테이블 정의의 일부이기 때문에 - 세로 목록의 맨 아래에 새 행을 추가하면 테이블 정의가 자동으로 확장될 뿐만 아니라 원래 명명된 범위의 정의도 확장됩니다. 따라서 새 옵션이 나타납니다. 콤보 상자의 선택 목록에서 마법!

답변2

아직 테이블을 생성하지 않은 경우 XL 2013에 관한 Nick의 답변은 괜찮습니다.

그러나 그보다 더 간단합니다. 테이블 열을 가리키는 이름을 정의합니다. 그런 다음 이름을 가리키는 다른 이름을 만듭니다. 입력 범위에서 두 번째 이름을 사용할 수 있으며 제대로 작동합니다.

답변3

Excel 2010에서는 이 작업을 수행할 수 있지만 프로세스는 2단계입니다.

  1. 테이블 구조 참조(예: myrange=mytable[myColumn3])를 사용하여 명명된 범위를 만듭니다.
  2. 명명된 범위를 컨트롤의 입력 범위로 사용합니다.

그리고 예상한 대로 제어 필드는 목록 변경 사항으로 업데이트됩니다. 왜 컨트롤에서 참조를 직접 사용할 수 없는지 잘 모르겠습니다. 하지만 Excel에 대해서는 아직도 이해하지 못하는 부분이 많습니다.

편집: 이름 관리자의 테이블 참조에서 @ 기호를 가져오는 것을 잊지 마십시오. 그렇지 않으면 유효성 검사 세트에 해당하는 행의 값만 가져옵니다(예: [@myColumn3]이 아닌 [myColumn3]).

관련 정보