Использовать столбец таблицы Excel в свойстве входного диапазона ComboBox

Использовать столбец таблицы Excel в свойстве входного диапазона ComboBox

Я спросил это в StackOverflow и был перенаправлен сюда. Извините за избыточность.

У меня есть лист Excel с полем со списком на Листе 1, который заполняется через его свойство Диапазон ввода из Динамического именованного диапазона на Листе 2. Он отлично работает и не требует VBA.

Мои данные на Sheet2 на самом деле находятся в таблице Excel (все данные находятся в файле XLS, внешних источников данных нет). Для ясности я хотел использовать структурированную ссылку на таблицу для Input Range поля со списком, но не могу найти синтаксис, который работает, например myTable[[#Data],[myColumn3]]

Я не могу найти никаких указаний на то, что поле со списком БУДЕТ принимать ссылки на структурированные таблицы, хотя и не понимаю, почему бы этого не сделать.

Итак, вопрос из двух частей: 1. Возможно ли использовать ссылку на столбец таблицы в свойстве диапазона ввода поля со списком (не используя VBA) и 2. КАК?

решение1

Я понимаю, что это довольно старый вопрос, но на всякий случай, если кто-то наткнется на него, как и я, пытаясь решить тот же вопрос... Как и ScottieB, я тоже не смог заставить ответ dav работать для меня. Вот как я решил это в Excel 2013.

  1. Создайте вертикальный список вариантов для вашего выпадающего списка. Не в таблице (пока), не с заголовком (пока, но оставьте место для него), просто столбец всего, что вам нужно для вашего выпадающего списка.

  2. Создайте/определите имя для вашего списка, используя обычную нотацию Sheet1!$A$1:$A$2.

  3. Вставьте элемент управления формы «Поле со списком», используя имя, которое вы только что создали для его диапазона ввода.

Пока все хорошо. Combo Box будет работать, но новые опции, добавленные в нижнюю часть вертикального списка (даже сразу под именованным диапазоном), не будут добавлены в раскрывающийся список; именованный диапазон, на котором основан раскрывающийся список, не расширяется динамически.

А теперь о самом интересном.

  1. Вернитесь к своему вертикальному списку (убедитесь, что вы очистили все, что вы добавили вокруг именованного диапазона, чтобы он был таким же, как вы оставили на шаге 2) и добавьте заголовок над ним. Подойдет любой текст, это просто метка для обозначения вашего списка вариантов.

(Или не делайте этого! Excel в любом случае добавит его на следующем шаге, если вы позволите.)

  1. Выделив заголовок, используйте Ctrl+T или Вставить | Таблица. Примите диапазон, который найдет Excel, и обязательно установите флажок «Мои таблицы имеют заголовки», затем нажмите ОК. Вы можете изменить имя таблицы, если хотите: это не имеет значения.

(Примечание: если вы не добавляли заголовок, не устанавливайте флажок «В моей таблице есть заголовки», чтобы Excel создал его автоматически.)

Теперь — очевидно, потому что исходный именованный диапазон теперь является частью определения таблицы — добавление новой строки в конец вашего вертикального списка не только автоматически расширяет определение таблицы, но и исходный именованный диапазон. Таким образом, новый вариант появится в списке вариантов выбора в раскрывающемся списке. Волшебство!

решение2

Ответ Ника относительно XL 2013 подойдет, если вы еще не создали таблицу.

Однако все проще. Вы определяете имя, указывающее на столбец таблицы. Затем создаете другое имя, указывающее на первое имя. Вы можете использовать второе имя в Input Range, и это отлично работает.

решение3

В Excel 2010 это можно сделать, но это двухэтапный процесс.

  1. Создайте именованный диапазон, используя структурированную ссылку на таблицу (например, myrange=mytable[myColumn3].
  2. Используйте именованный диапазон в качестве входного диапазона элемента управления.

И, как и ожидалось, поле управления обновляется вместе с изменениями в списке. Я не уверен, почему нельзя использовать ссылку непосредственно в элементе управления, но в Excel есть много того, чего я до сих пор не понимаю.

EDIT: Не забудьте убрать символ @ из ссылки на таблицу в Name Manager, в противном случае вы получите только соответствующее значение строки для набора проверки (например, [myColumn3], а не [@myColumn3]).

Связанный контент