Главная » Статьи » Excel » Формулы рабочего листа |
У меня зазвонил телефон. На другом конце трубки оказался молодой человек, который искал рецепт для каскадных списков следующего вида: Регион - Должность - Имя сотрудника. Ясно, что должностная сетка в регионах либо полностью, либо весьма сильно пересекается. И для таких случаев мой предыдущий рецепт не годится, так как строки выпадающего списка текущего уровня определяются не только лишь предыдущим уровнем, а ДВУМЯ предыдущими уровнями (важен и Регион, и Должность, дающие комбинацию, определяющую список имён конкретных сотрудников). Мы с ним поговорили, подумали, но поскольку я страшный тугодум и хорошие идеи меня посещают чаще в спокойной обстановке, когда никто не отвлекает, то во время разговора я ничего креативного не выдал, но, когда я лёг спать, прежде чем заснуть, я понял, что эту задачу решить не так уж и сложно. И вот сегодня на следующий день я решил добить уж эту тему и опубликовать очередной рецепт про каскадные связанные выпадающие списки, когда есть два уровня, комбинация которых определяет третий уровень. Должен признать, что это гораздо более часто встречающаяся ситуация в реальной жизни. Файл примераСкачатьОсобенности
ФормулыФормулы привычно сосредоточены в именованных диапазонах. ИД SelectRegion (ячейка A2)Осуществляется проверка, что в столбце Сотрудник текущей строки нет выбранного значения (если есть, то список не формируется для обеспечения целостности данных). Если ячейка пуста, то через формулу СМЕЩ формируется диапазон для выпадающего списка на основе столбца умной таблицы tblLists[Регион]. Напоминаю, что мы не можем просто указать tblLists[Регион], так как не хотим видеть пустые строки в выпадающем списке. ИД SelectPosition (ячейка B2)Всё полностью аналогично. ИД SelectPerson (ячейка C2)Данная формула проверяет через сочетание формул И() и НЕ(), что столбцы Регион и Позиция заполнены (если они не заполнены, то мы не сможем определить нужный столбец). Поскольку столбец мы определяем динамически, через конкатенацию строк значений ячеек Регион и Позиция (между ними знак подчёркивания), то результат этой конкатенации мы не можем напрямую указать между tblLists[ и ], поэтому придётся воспользоваться функцией ДВССЫЛ (INDIRECT). На рисунке вы видите, что за исключением двух идентичных обведенных фрагментов, которые означают динамический диапазон через ДВССЫЛ, вся остальная конструкция соответствует тому, что уже обсуждалось. Надеюсь, это было полезно! Читайте также: | |
Просмотров: 8007 | Комментарии: 4 | | |
Всего комментариев: 4 | ||||
| ||||