Как заполнить данные в выпадающем списке на основе данных из другого текстового поля в vba

#excel #vba

Вопрос:

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

Вот моя таблица из excel:

Примеры Данных

И вот моя анкета:

введите описание изображения здесь

Поэтому, когда пользователь введет 100, textbox как на изображении выше, только alex herd и Diana Edmunds будет доступно для выпадающего списка и выбора в Party Name выпадающем списке. Как этого добиться?

Ответ №1:

Поскольку вы не добавили собственный код, я ограничусь только основными фактами вашего поста, демонстрирующего подход, использующий функции динамического массива MS 365 с помощью Filter() функции, организованной в Let контейнере функций, который позволяет создать четкую структуру, избегающую некоторых избыточностей, и позволяет определять выражения («переменные») вместе с их содержимым в парах аргументов.

Необходимые шаги

Вы ссылаетесь на существующий лист данных (при условии, что столбцы A:C), поэтому выполните следующие действия:

  • Запишите значение текстового поля в именованную ячейку (например $D$1 , «Число»).,
  • Введите следующую формулу в ячейку $D$2:
 =LET(data,FILTER(A:B,C:C=Number), FName,INDEX(data,,1), LName,INDEX(data,,2), PROPER(FNameamp; " " amp; LName))
 

Эта формула динамически записывает нужные имена в так называемый диапазон разлива, на который может ссылаться суффикс «#»(например, by D2# )

Данные

  • В конечном итоге вы можете использовать это TextBox1_Change событие для присвоения всего набора данных .List свойству вашего выпадающего списка:
      ComboBox1.List = ThisWorkbook.Worksheets("Data").Range("D2#").Value ' << change to needed sheet name