В этой статье мы продемонстрирует простой подход по настройке выпадающего списка, зависящего от другого выпадающего списка. Например, мы выбираем страну в ячейке F1 и это изменяет список городов, доступных для выбора в ячейке F2, как показано на Рисунке 1.
Предположим, что мы уже настроили выпадающий список для страны, ссылающийся на диапазон A1:C1, тогда мы можем настроить список городов, используя формулу ниже, где:
СМЕЩ возвращает диапазон для зависимого выпадающего списка
A2 фиксирует начальную ячейку для функции СМЕЩ
0 говорит функции СМЕЩ, что вертикального смещения нет
ПОИСКПОЗ(F1;A1:C1;0)-1 говорит функции СМЕЩ на сколько столбцов нужно сместиться вправо от начальной ячейки A2
СУММПРОИЗВ((F1=A1:C1)*(A2:C3<>"")) сообщает функции СМЕЩ количество непустых ячеек (A2:C3<>"") в выбранном столбце (F1=A1:C1)
=СМЕЩ(A2 ;0 ;ПОИСКПОЗ(F1;A1:C1;0)-1 ;СУММПРОИЗВ((F1=A1:C1)*(A2:C3<>""))) |
Рисунок 2 демонстрирует зависимый список городов, когда в ячейке для страны выбрана Украина, где:
(F1=A1:C1) – это массив {ЛОЖЬ;ИСТИНА;ЛОЖЬ}
(A2:C3<>"") – это массив {ЛОЖЬ;ИСТИНА;ИСТИНА:ЛОЖЬ;ЛОЖЬ;ИСТИНА}
(F1=A1:C1)*(A2:C3<>"") – это массив {0;1;0:0;0;0}, поскольку произведение ЛОЖЬ*ЛОЖЬ или ЛОЖЬ*ИСТИНА равно 0, тогда как произведение ИСТИНА*ИСТИНА равно 1
Функция СУММПРОИЗВ возвращает сумму массива {0;1;0:0;0;0}, равную 1 в нашем случае
Продемонстрированный подход по настройке зависимых выпадающих списков является наиболее простым и наглядным из всех возможных.
Gortim
Красиво.
А разве не ";" должна разделять скобки в СУММПРОИЗВ?
Мне кажется, можно оставить СУММ и * внутри выражения.
Latyshenko Автор
Наоборот, СУММПРОИЗВ предполагает прозведение массивов (*). См. тут https://support.microsoft.com/ru-ru/office/суммпроизв-функция-суммпроизв-16753e75-9f68-4874-94ac-4d2145a2fd2e
СУММ для этих целей не наглядно...Если через СУММ, то выпадающий список можно было бы получить так =СМЕЩ(A2;0;ПОИСКПОЗ(F1;A1:C1;0)-1;СУММ(ИНДЕКС((F1=A1:C1)*(A2:C3<>"");))) . В отличие от СУММПРОИЗВ, функция СУММ не может суммировать массивы без формул массивов, но Проверка данных не принимает формулы массивов)))