Как создать DropDown с динамическим списком проверки - PullRequest
0 голосов
/ 26 сентября 2019

У меня есть таблица данных со столбцами «Категория» и «Продукт».Названия продуктов не являются уникальными, имена категорий не являются уникальными, но комбинация Категория-Продукт появляется в таблице только один раз.Эта таблица данных НЕ сортируется каким-либо образом.

Category  Product

========  =======

Chairs      Victorian

Chairs      Beautiful

Chairs      Edwardian

Chairs      Gross

Tables      Victorian

Tables      Edwardian

Tables      Huge

Tables      Kool

Tables      Lambda

Closets     Edwardian

Closets     Excellent

Closets     Major

Closets     Hello

Chairs      Huge

Tables      Picturesque

Closets     Picturesque

Chairs      Incredible

Closets     Minor

Chairs      Just

Chairs      Kool

Я уже создал временную таблицу с уникальными именами категорий, которая будет использоваться в качестве диапазона проверки для первого раскрывающегося списка.Эта часть работает как надо.

Categories

==========

Chairs

Tables

Closets

Рядом с первым раскрывающимся списком у меня есть другое раскрывающееся меню, в котором должен быть динамически созданный список продуктов категории, выбранной в предыдущем раскрывающемся списке.

Если этотолько для одной пары раскрывающихся списков (категория / продукт), я могу создать удовлетворительный результат, используя временные столбцы.

Category:   Chairs           Product: Victorian

                                                  Beautiful

                                                  Edwardian

                                                  Gross

                                                  Huge

                                                  . . .

Проблема заключается в том, что эти раскрывающиеся пары должны быть частью другой таблицы со столбцами: «Категория», «Продукт», «Сумма».Итак, когда пользователь выбирает в первом столбце значение раскрывающегося списка Категория «Стулья», в следующем столбце раскрывающийся список должен быть доступен в списке только товаров из категории «Стулья».В следующей строке, когда пользователь выбирает категорию «Таблицы», в соседней ячейке должны быть доступны только товары из категории «Таблицы».

Я пытаюсь сделать это, используя только формулы, формулы массива, именованные функции (не путайте их с функциями UDF) без кода VBA.

Возможно ли это сделать или я трачу свое время (уже 2 дня)?

Файл Excel с тем, что я ужесделал: здесь

ОБНОВЛЕНИЕ (2019-09-30):

Обнаружил это в комментарии: ' Однако Excel нене позволяют использовать формулы массива при проверке данных, '... Фернандо Дж. Ривера, 4 ноября 17 г. Динамический раскрывающийся список Excel по отфильтрованной таблице

Итак, это означает, что НЕ можно выполнить динамическую проверку данных.

Ответы [ 2 ]

1 голос
/ 26 сентября 2019

Что я обычно делаю, это создаю именованные диапазоны с разными результатами, которые я могу получить из 1-го выпадающего списка.В этом случае: 3 диапазона, как на изображении ниже: Имя, назначенное диапазону, исключая 1-ю строку (где имя диапазона) *

Как только у меня есть это, я использую INDIRECTчтобы вызвать правильный диапазон, как показано ниже (учитывая, что ваш первый выпадающий список находится в ячейке E6):

=INDIRECT(E6)

Снимок экрана, описанного выше

Единственная проблема этогоМетод заключается в том, что если существует много различных вторичных выпадающих списков, это может занять немного времени.С формулами массива, которые должны появиться в следующих обновлениях Excel (https://support.office.com/en-us/article/filter-function-f4f7cb66-82eb-4767-8f7c-4877ad80c759), это будет намного быстрее и проще (как это уже есть в электронных таблицах Google).

Удачи!

0 голосов
/ 26 сентября 2019

Способ решения этой проблемы заключается в использовании функции IF в окне проверки данных.

Picture

=IF($F$3=$B$2,$B$3:$B$10,$C$3:$C$10)

Проверяется,ячейка F3 столбца категории и определяет, соответствует ли она строке в ячейке B2.Если это так, он использует список проверки под таблицами столбцов, а если нет, то использует другой список.Это можно распространить на шкафы и т. Д. Путем вложения операторов IF.

Недостатком является, насколько я вижу, проверка должна выполняться для каждой строки отдельно.

...