Выпадающий список с быстрым поиском
Классический выпадающий список в ячейке листа Excel, сделанный через Данные — Проверка (Data — Validation) — простая и удобная штука, которую ежедневно применяют очень многие пользователи. Однако, у этого списка есть один весьма серьезный недостаток — в нём нет быстрого поиска по первым символам, т.е. фильтрации (отбора) только тех значений, куда введённый фрагмент входит как подстрока. Это серьезно ухудшает удобство пользования даже если в списке всего пара-тройка десятков позиций, а при нескольких сотнях убивает юзабилити напрочь.
Давайте рассмотрим как всё же реализовать подобный трюк. В качестве подопытного кролика возьмём список 250 лучших фильмов по версии IMDb:
Конечная цель — создать выпадающий список (ячейка G3), в котором можно будет быстро находить нужные фильмы, введя только жанр, год или фрагмент названия, например «гамп».
Шаг 1. Определяем, кто нам нужен
Сначала нам нужно понять, какие из исходных ячеек нужно показывать в списке, т.е. определить содержится ли введённый в выпадающем списке текст (например, жанр «детектив») в названии фильма. Для этого добавим слева от исходных данных еще один столбец с функцией ПОИСК (SEARCH), которая ищет заданную подстроку в тексте и выдает либо порядковый номер символа, где он был обнаружен, либо ошибку, если его там нет:
Теперь завернем нашу формулу в функцию проверки ЕЧИСЛО (ISNUMBER), которая превратит числа в логическую ИСТИНУ (TRUE), а ошибки — в ЛОЖЬ (FALSE):
Теперь сделаем так, чтобы ЛОЖЬ превратилась в 0, а вместо ИСТИНА в столбце появились последовательно возрастающие индексы-числа 1,2,3… и т.д. Это можно сделать с помощью добавления к нашей же формуле ещё парочки функций:
Здесь функция ЕСЛИ (IF) проверяет что мы имеем (ИСТИНУ или ЛОЖЬ), и
- если была ИСТИНА, то выводит максимальное значение из всех вышестоящих чисел + 1
- если была ЛОЖЬ, то выводит 0
Шаг 2. Отбираем в отдельный список
Дальше — проще. Теперь банальной функцией ВПР (VLOOKUP) просто выведём все найденные названия (я добавил столбец с порядковыми номерами для удобства):
После этого можно поиграться, вводя в жёлтую ячейку G2 разные слова и фразы и понаблюдать за тем, как наши формулы отбирают только подходящие фильмы:
Шаг 3. Создаем именованный диапазон
Теперь создадим именованный диапазон, который будет ссылаться на отобранные фильмы. Для этого выбрем на вкладке Формулы команды Диспетчер имен — Создать (Formulas — Name Manager — Create):
Имя диапазона может быть любым (например, Фильмы), а самое главное — это функция СМЕЩ (OFFSET), которая и делает всю работу. Напомню её синтаксис, если вы подзабыли:
=СМЕЩ(начальная_ячейка; сдвиг_вниз; сдвиг_вправо; высота; ширина)
У нас:
- В качестве начальной ячейки задаём первую ячейку списка отобранных элементов (E2).
- Сдвиги вниз и вправо у нас отсутствуют, т.е. равны нулю.
- Высота диапазона у нас соответствует максимальному значению индекса из столбца А.
- Ширина диапазона — 1 столбец.
Осталось сделать выпадающий список.
Шаг 4. Создаем выпадающий список
Выделим жёлтую ячейку (G2) и выберем на вкладке Данные команду Проверка данных (Data — Validation). В открывшемся окне выбрем Список (List) в поле Тип данных (Allow), а в качестве источника введем имя нашего созданного диапазона со знаком равно перед ним:
Чтобы Excel не ругался при вводе на неточное совпадение наших фраз с исходным списком, на вкладке Сообщение об ошибке (Error Alert) в этом окне нужно выключить флажок Выводить сообщение об ошибке (Show error alert):
Вот и всё. Можно жать на ОК и наслаждаться результатом:
Для пущего удобства при вводе с клавиатуры можно использовать Ctrl+Enter вместо Enter после ввода текста (так активная ячейка не уходит вниз) и сочетание клавиш Alt+стрелка вниз, чтобы развернуть выпадающий список без мыши.
P.S.
В принципе, можно было бы и не продолжать, но недавно Microsoft выкатила обновление вычислительного движка Excel, который теперь поддерживает динамические массивы и имеет специальные функции для работы с ними. Большинству пользователей они станут доступны в ближайшие месяцы, но даже если пока этих возможностей в вашем Excel нет — грех не показать как элементарно с их помощью решается наша задача.
Всё, что мы делали на Шагах 1-3 заменяется одной(!) формулой, где новая функция ФИЛЬТР (FILTER) отбирает из исходного диапазона A2:A251 только те фильмы, которые содержат заданную подстроку.
А дальше останется при создании выпадающего списка указать в качестве источника первую ячейку диапазона отобранных фильмов (C2) и добавить к ней знак #, чтобы получить ссылку на весь динамический массив:
И всё. Никаких именованных диапазонов и медленных СМЕЩ, никаких танцев с дополнительными столбцами и формулами. Песня!
Ссылки по теме
- Что такое динамические массивы в Excel
- Разбор трех основных функций динамических массивов: СОРТ, ФИЛЬТР и УНИК
- 4 способа создать выпадающий список на листе Excel
В Excel большинство из нас может фильтровать данные с помощью функции «Фильтр». Но пробовали ли вы когда-нибудь фильтровать данные из выпадающего списка? Например, когда я выбираю один элемент из раскрывающегося списка, я хочу, чтобы соответствующие ему строки были отфильтрованы, как показано на следующем снимке экрана. В этой статье я расскажу о том, как фильтровать данные с помощью раскрывающегося списка на одном или двух листах.
Фильтрация данных из выпадающего списка на одном листе с помощью вспомогательных формул
Отфильтровать данные из выпадающего списка на двух листах с кодом VBA
Фильтрация данных из выпадающего списка на одном листе с помощью вспомогательных формул
Чтобы отфильтровать данные из раскрывающегося списка, вы можете создать несколько столбцов вспомогательных формул, выполните следующие шаги один за другим:
1. Сначала вставьте раскрывающийся список. Щелкните ячейку, в которую вы хотите вставить раскрывающийся список, затем щелкните Данные > проверка достоверности данных > проверка достоверности данных, см. снимок экрана:
2. В выскочившем проверка достоверности данных диалоговое окно под Настройки вкладка, выберите Список из Разрешить раскрывающийся список, а затем щелкните кнопку, чтобы выбрать список данных, на основе которого вы хотите создать раскрывающийся список, см. снимок экрана:
3, Затем нажмите OK Кнопка, раскрывающийся список вставляется сразу, выберите один элемент из раскрывающегося списка, затем введите эту формулу: = СТРОКИ ($ A $ 2: A2) (A2 — первая ячейка в столбце, содержащая значение раскрывающегося списка) в ячейку D2, а затем перетащите дескриптор заполнения вниз к ячейкам, чтобы применить эту формулу, см. снимок экрана:
4. Продолжайте вводить эту формулу: = ЕСЛИ (A2 = $ H $ 2; D2; «») в ячейку E2, а затем перетащите дескриптор заполнения вниз, чтобы заполнить эту формулу, см. снимок экрана:
Внимание: В приведенной выше формуле :A2 — первая ячейка в столбце, содержащая значение раскрывающегося списка ,H2 это ячейка, в которой размещен раскрывающийся список, D2 — формула первого вспомогательного столбца.
5. А затем введите эту формулу: = ЕСЛИОШИБКА (МАЛЕНЬКИЙ ($ E $ 2: $ E $ 17; D2); «») в ячейку F2, затем перетащите маркер заполнения вниз к ячейкам, чтобы заполнить эту формулу, см. снимок экрана:
Внимание: В приведенной выше формуле: E2: E17 — это ячейки второй вспомогательной формулы, D2 — первая ячейка в первом столбце вспомогательной формулы.
6. После вставки столбцов вспомогательных формул вы должны вывести отфильтрованный результат в другое место, примените эту формулу: =IFERROR(INDEX($A$2:$C$17,$F2,COLUMNS($J$2:J2)),»») в ячейку J2, а затем перетащите дескриптор заполнения из J2 в L2, и будет извлечена первая запись данных на основе раскрывающегося списка, см. снимок экрана:
Внимание: В приведенной выше формуле: A2: C17 исходные данные, которые вы хотите отфильтровать, F2 — третий столбец вспомогательных формул, J2 это ячейка, в которую вы хотите вывести результат фильтрации.
7. А затем продолжайте перетаскивать дескриптор заполнения вниз к ячейкам, чтобы отобразить все соответствующие отфильтрованные записи, см. Снимок экрана:
8. С этого момента, когда вы выбираете один элемент из раскрывающегося списка, все строки, основанные на этом выборе, фильтруются одновременно, см. Снимок экрана:
Отфильтровать данные из выпадающего списка на двух листах с кодом VBA
Если ячейка раскрывающегося списка находится на Листе 1, а отфильтрованные данные на Листе 2, при выборе одного элемента из раскрывающегося списка другой лист будет отфильтрован. Как вы могли закончить эту работу в Excel?
Следующий код VBA может оказать вам услугу, пожалуйста, сделайте следующее:
1. Щелкните правой кнопкой мыши вкладку листа, содержащую ячейку раскрывающегося списка, и выберите Просмотреть код из контекстного меню в открывшемся Microsoft Visual Basic для приложений окна, скопируйте и вставьте следующий код в пустой модуль:
Код VBA: фильтровать данные из выпадающего списка на двух листах:
Private Sub Worksheet_Change(ByVal Target As Range)
'Updateby Extendoffice
On Error Resume Next
If Not Intersect(Range("A2"), Target) Is Nothing Then
Application.EnableEvents = False
If Range("A2").Value = "" Then
Worksheets("Sheet2").ShowAllData
Else
Worksheets("Sheet2").Range("A2").AutoFilter 1, Range("A2").Value
End If
Application.EnableEvents = True
End If
End Sub
Внимание: В приведенном выше коде: A2 — это ячейка, содержащая раскрывающийся список, и Sheet2 содержит ли рабочий лист данные, которые вы хотите отфильтровать. Номер 1 в скрипте: Автофильтр 1 — это номер столбца, по которому вы хотите выполнить фильтрацию. Вы можете изменить их по своему усмотрению.
2. С этого момента, когда вы выбираете один элемент из раскрывающегося списка на Sheet1, и соответствующие данные будут отфильтрованы на Sheet2, см. Снимок экрана:
Лучшие инструменты для работы в офисе
Kutools for Excel Решит большинство ваших проблем и повысит вашу производительность на 80%
- Снова использовать: Быстро вставить сложные формулы, диаграммы и все, что вы использовали раньше; Зашифровать ячейки с паролем; Создать список рассылки и отправлять электронные письма …
- Бар Супер Формулы (легко редактировать несколько строк текста и формул); Макет для чтения (легко читать и редактировать большое количество ячеек); Вставить в отфильтрованный диапазон…
- Объединить ячейки / строки / столбцы без потери данных; Разделить содержимое ячеек; Объединить повторяющиеся строки / столбцы… Предотвращение дублирования ячеек; Сравнить диапазоны…
- Выберите Дубликат или Уникальный Ряды; Выбрать пустые строки (все ячейки пустые); Супер находка и нечеткая находка во многих рабочих тетрадях; Случайный выбор …
- Точная копия Несколько ячеек без изменения ссылки на формулу; Автоматическое создание ссылок на несколько листов; Вставить пули, Флажки и многое другое …
- Извлечь текст, Добавить текст, Удалить по позиции, Удалить пробел; Создание и печать промежуточных итогов по страницам; Преобразование содержимого ячеек в комментарии…
- Суперфильтр (сохранять и применять схемы фильтров к другим листам); Расширенная сортировка по месяцам / неделям / дням, периодичности и др .; Специальный фильтр жирным, курсивом …
- Комбинируйте книги и рабочие листы; Объединить таблицы на основе ключевых столбцов; Разделить данные на несколько листов; Пакетное преобразование xls, xlsx и PDF…
- Более 300 мощных функций. Поддерживает Office/Excel 2007-2021 и 365. Поддерживает все языки. Простое развертывание на вашем предприятии или в организации. Полнофункциональная 30-дневная бесплатная пробная версия. 60-дневная гарантия возврата денег.
Вкладка Office: интерфейс с вкладками в Office и упрощение работы
- Включение редактирования и чтения с вкладками в Word, Excel, PowerPoint, Издатель, доступ, Visio и проект.
- Открывайте и создавайте несколько документов на новых вкладках одного окна, а не в новых окнах.
- Повышает вашу продуктивность на 50% и сокращает количество щелчков мышью на сотни каждый день!
Просмотров: 215
Постановка задачи. Необходимость применения фильтра для выпадающего списка.
Сегодня мы наглядно рассмотрим применение фильтра в выпадающем списке Excel. В ходе работы часто возникает ситуация, кода необходимо для внесения данных выбирать нужные значения из заданного перечня. Такой способ позволяет не только ускорить введение данных, но и избавиться от возможных ошибок при наборе текста. Ведь не секрет, что даже неверный пробел в названии уже искажает наименование организации или мешает выбору соответствующей цены либо иных данных, связанных с названием.
В таком случае используют выпадающий список. Его создание не отличается в общем случае сложностью. Однако, если выпадающий список содержит сотни и тысячи вариантов записей, то ориентироваться в нем становится неудобно. Способ поиска с помощью ввода нужных слов с дальнейшим отбрасыванием позиций, не содержащих этот шаблонный текст, не работает. Предварительная сортировка списка могла бы помочь, но во многих случаях она попросту невозможна.
На помощь приходит создание фильтра для отбора только строк, содержащих нужный текст, вручную. Использование фильтра для выпадающего списка в Excel позволит отобрать необходимые позиции, основываясь на содержании элемента выпадающего списка. Создание такого списка может быть выполнено разными способами. В частности, в MS Office 365 присутствует специальная функция ФИЛЬТР, которая позволяет решить проблему. Однако далеко не везде эта версия MS Office установлена. Особенно это касается приложений, установленных в корпоративной среде. Использовать же онлайн версию офиса, в частности, работая в облаке от yandex.ru, mail.ru , onedrive.live.com и так далее не всегда возможно и не очень удобно. Данная версия, к сожалению, не содержит многих инструментов обработки данных, к которым мы привыкли. Нет консолидации, нет промежуточного итога. Отсутствуют возможности «Анализ что, если» и получение данных из внешних источников. И этот список отсутствующих инструментов можно продолжать. Существуют так же корпоративные правила, которые во многих случаях запрещают работу с документами в онлайн режиме.
На нашем занятии мы создадим фильтр выпадающего списка в ячейке, основываясь на функциях, имеющихся в любой версии MS Excel. Это позволит применить данный способ в любой ситуации. Способ достаточно прост и быстр. При создании фильтра кратко будут описаны функции, которые используются, и те параметры этих функций, которые необходимо использовать. Чтобы создать такой фильтр, нам понадобится всего пять шагов.
Исходная ситуация следующая. Имеется два листа – список и проверка. На листе список в колонке А будет задаваться проверочный текст, а в колонке В будет выводится выпадающий список, отфильтрованный согласно заданному проверочному тексту и полученный на основе диапазона А2:А121 на листе Проверка. Список достаточно условный, но вместо него может быть список оборудования, список наименований поставщиков, список операций и прочие перечни значений. Итак, приступаем. Будьте внимательны и отслеживайте текст формул и функций, которые применятся.
Рисунок 1
Шаг первый. Проверяем вхождение шаблонного текста в список.
Для такой проверки можно применить функции ПОИСК или НАЙТИ. Функция НАЙТИ чувствительна к регистру, поэтому применим функцию ПОИСК во избежание ошибок с несовпадающим регистром. Ее синтаксис
=ПОИСК(искомый текст; строка для поиска наличия искомого текста).
Если данный текст в указанной строке содержится, то результатом будет номер первого знака, с которого начинается заданный текст для поиска в указанной строке. Если текст найден не будет, мы увидим значение ошибки.
Введем на листе список текст, который явно присутствует в ячейках нашего списка на листе проверка. Следом на листе проверка напротив первого же элемента списка введем формулу
=ПОИСК(список!$A$1;A2).
Обратите внимание, что ячейка с листа список, где лежит проверяемый текст, имеет абсолютный адрес. Протягиваем формулу вниз и видим результат.
Рисунок 2
Все работает, можно двигаться дальше. Но привязка к определенной ячейки для проверки не очень хорошее решение. Те, кого все же это устраивает, могут сразу перейти к третьему шагу. Для меня же при достаточно большой таблице неудобно каждый раз возвращаться в ее начало, чтобы поменять условие для фильтра. Поэтому я перехожу ко второму шагу.
Шаг Второй. Привязываем условие к последней заполненной ячейке в колонке А на листе список.
Получить адрес нужной ячейки мы можем, используя функцию АДРЕС. В ней надо задать номер строки нужной ячейки, номер столбца этой ячейки, тип адреса – абсолютный, смешанный с закреплением строки и так далее. Остальные параметры в нашем случае значения не имеют. Важно помнить, что результатом работы данной функции будет текстовая строка с полученной ссылкой.
Чтобы получить номер последней заполненной ячейки в колонке А на листе таблица, мы применим функцию ПОИСКПОЗ. Ее назначение – определить номер позиции выбранного элемента в указанном списке. Надо последовательно указать искомый элемент, список и тип сопоставления для определения способа поиска. Пи этом есть небольшой нюанс. Если в качестве искомого указать значение, которое будет заведомо больше любого имеющегося, а тип сопоставления задать равным единице, то будет выведена позиция последнего элемента в списке. Нам это и надо. В качестве же искомого значения укажем две буквы «Я» подряд. Вряд ли будет слово, которое будет начинаться с этих букв.
Для определения номера столбца можно просто прописать единицу, так как колонка А первая на листе. Однако мы применим функцию СТОЛБЕЦ, которая выводит номер столбца указанной ячейки. Это позволит сделать нашу формулу гибкой, не привязывая ее к одному столбцу.
Ну и наконец вспомним, что нам нужна абсолютная ссылка, поэтому третий параметр функции должен быть равен одному. Соберем все полеченные нами параметры функции АДРЕС вместе и получаем формулу
=АДРЕС(ПОИСКПОЗ(“ЯЯ”;список!A:A;1);СТОЛБЕЦ(список!A1);1)
Рисунок 3
Как видите адрес мы получили. Но есть две проблемы. Во-первых, адрес указывает на ячейку на текущем листе проверка, а не на листе список. А во-вторых, мы видим именно адрес, а не содержимое нужной ячейки. Исправим это. Соединим полученный адрес и имя нужного листа. Выведем инаименование листа впереди, не забывая про кавычки и восклицательный знак, и используя амперсанд для объединения полеченный строк. Теперь полученную общую строку сделаем адресом, обернув полученную строку функцией ДВССЫЛ. Это значит, что в самом начале после знака равно перед именем листа пропишем ДВССЫЛ и откроем скобку, а вторую скобку закроем в самом конце. В результате скобки функции ДВССЫЛ как бы охватывают нашу формулу получения общей строки – отсюда и название приема – обернуть. В итоге получаем такую формулу.
=ДВССЫЛ(“список!”&АДРЕС(ПОИСКПОЗ(“ЯЯ”;список!A:A;1);СТОЛБЕЦ(список!A1);1))
Теперь вместо адреса мы видим содержимое последней заполненной ячейки на листе Список, а это нам и надо.
Рисунок 4
Теперь аккуратно скопируем полученную формулу и скопируем в нашу функцию ПОИСК, выведенную в начале работы, вместо адреса ячейки А1. Проверяем работу и убеждаемся, что на листе проверка цифры появляются напротив ячеек, содержащих текст из последней заполненной ячейки листа таблица в колонке А.
Рисунок 5
Шаг третий. Выведем возрастающую нумерацию для ячеек списка на листе проверка, в которых имеется проверочное слово.
Чтобы это сделать, применим функцию ЕСЛИ в колонке С листа проверка. Она позволяет проверить условие и вывести один из двух вариантов в зависимости от его соблюдения.
В качестве условия применим функцию ЕЧИСЛО, с помощью которой обернем нашу функцию поиск. Если функция ПОИСК найдет нужное слово в списке, то результатом будет цифра. Тогда функция ЕЧИСЛО выведет результат ИСТИНА, а если нет, то результатом функции ЕЧИСЛО будет ложь.
Для параметра ИСТИНА функции ЕСЛИ зададим автоматическую нумерацию полученных строк с найденными числами. Для этого возьмем максимум из предыдущих ячеек и прибавим к полученному единицу. Так как в начале никаких предыдущих ячеек фактически нет, то для функции МАКС возьмем диапазон С1:С1 и закрепим первую ячейку. В результате при копировании формулы вниз будем получать диапазоны C1:C2, C1:C3 и так далее.
Ну и для параметра ЛОЖЬ выведем пустое значение в виде двух кавычек подряд. В результате получаем такую запись.
=ЕСЛИ(ЕЧИСЛО(ПОИСК(ДВССЫЛ(“список!”&АДРЕС(ПОИСКПОЗ(“ЯЯ”;список!A:A;1);СТОЛБЕЦ(список!A1);1));A2));МАКС($C$1:C1)+1;””)
Она кажется сложной, но на самом деле при последовательном ее создании сложностей возникнуть не должно.
Рисунок 6
Шаг четвертый. Соберем вместе все значения, соответствующие нашему искомому параметру.
Чтобы это сделать, выведем снова нумерацию, соответствующую нашему списку, в колонке D листа проверка. Напротив ее первой ячейки применим функцию ИНДЕКС. Ее параметры – адрес исходного диапазона, номер строки и номер столбца этого диапазона, из пересечения которых надо взять данные. Исходным диапазоном будет диапазон А1:С121 на листе проверка. Номер нужной строки найдем с помощью функции ПОИСКПОЗ, указав для поиска номер текущей позиции в колонке С листа проверка и запустив точный поиск в помощью типа сопоставления равного нулю. Номер столбца зададим первый.
=ИНДЕКС($A$2:$C$121;ПОИСКПОЗ(D2;C2:C121;0);1)
Рисунок 7
Как видим, после перечня строк, содержащих последнее введение значение на листе список, в ненайденных позициях вывелась ошибка. Чтобы это исправить, обернем нашу формулу функцией ЕСЛИОШИБКА и указав в качестве второго параметра этой функции ноль.
=ЕСЛИОШИБКА(ИНДЕКС($A$2:$C$121;ПОИСКПОЗ(D2;$C$2:$C$121;0);1);0)
Рисунок 8
Шаг пятый и последний. Формируем на основе полученного перечня источник для выпадающего списка.
Переходим на лист список. Выделяем столбец В, переходим на вкладку данные и нажимаем кнопку «проверка данных». Тип данных выбираем «Список», а в строке “источник” введем функцию СМЕЩ. С ее помощью зададим диапазон, ячейки которого будут использованы в нашем списке. Параметры функции СМЕЩ по очереди в нашем случае:
1. начальная ячейка, относительно которой будем двигаться. В нашем случае это ячейка Е2 на листе проверка. Не забываем ее закрепить.
2. сдвиг по строкам. В нашем случае его нет, поэтому просто отделим место этого параметра стандартным разделителем.
3. сдвиг по колонкам. Его тоже не будет.
4. количество строк в формируемом диапазоне. Чтобы это узнать, от общего количества заполненных ячеек в колонке Е листа проверка отнимем количество числовых ячеек в этом же столбце. Найти количество тех и других можно функциями СЧЕТЗ и СЧЕТ соответственно.
5. Количество столбцов в формируемом диапазоне. У нас будет только одна колонка.
В итоге получаем
=СМЕЩ(проверка!$E$2;;;СЧЁТЗ(проверка!$E:$E)-СЧЁТ(проверка!$E:$E);1)
Рисунок 9
Рисунок 10
Готово! Мы получили выпадающий список только из тех значения из исходного перечня, которые содержат указанный в последней заполненной ячейки колонки А на листе список.
Возможные проблемы.
- Наша формула будет искать последнюю ячейку столбца А на листе список с текстом. Если же в последней ячейке будет число – Excel его не найдет. Чтобы обойти эту проблему, достаточно заранее задать текстовый формат для всех ячеек этого столбца.
- Отбор по последнему значению будет работать во всех ячейках, где применен выпадающий список. Если необходимо поменять значение на основе выпадающего списка по ранее указанному значению, достаточно вернуться к нему и убрать все введенные позже проверочные значения. Эти значения никак не связаны с значениями, отобранными из списка, поэтому проблем с другими выбранными элементами не будет.
Заключение.
Мы научились отбирать нужные нам значения из начального списка и формировать на их основе выпадающий список в Excel, применяя стандартные формулы и функции. Данный подход позволил упростить работу по применению выпадающего списка на практике.
На этом наше занятие подошло к концу. Желаем всем успеха в работе. До встречи на наших занятиях.
A dynamic drop down (also known as a dependent drop down) is a term for drop downs with a dynamic list. The list items of a dynamic drop down get updated according to another input which is usually another drop down as well. A common example is to have lots of items under different categories. Instead of trying to finding an item in a huge list, you can first select a category and then find your desired item in a filtered list. In this article, we are going to show you how to create a dynamic drop down list Excel using the dynamic array functions UNIQUE and FILTER.
Designing the dynamic drop downs
Our sample data consists of a 2-column table containing names and types. As a result, we need a drop down for each column. However, there 2 problems we need to address first:
- Type values occur multiple times in the corresponding column. Listing an item multiple times may confuse our users.
- We want the Name values to be listed based on the selection of type. For example, if we set the type to «WATER», the second drop down should only list the names that match with type «WATER».
There are multiple ways to create a dynamic drop down list Excel. Here are a few examples:
- How to create dependent dropdowns
- Transforming a Complex Pricing List into a Quoting Tool in Excel
However, mos of these methods require an extensive use of formulas. Fortunately, the new dynamic array functions make things a lot easier. Let’s take a look at the basics of the dynamic array functions UNIQUE and FILTER.
UNIQUE and FILTER
In September, 2018, Microsoft has introduced new concepts like the dynamic arrays and spilling, in addition to a set of new functions, like the UNIQUE and the FILTER functions. The common characteristic of these two functions is their ability to return an array of values. We will be using this feature to populate the lists of unique items in our dynamic Excel drop down list.
UNIQUE Function
The UNIQUE function returns an array of unique values from a given array or range. This function is very helpful in eliminating items that occur multiple times. If you have a data set similar to our example that contains multiple values, like under the column Type, this formula will help simplify those lists.
When using the UNIQUE function, add the reference for the column of values you need, and the function will return a list of unique items.
=UNIQUE(Type)
*Type is named range referring C4:C17
For more information and examples for the UNIQUE function, please see our related guide.
FILTER Function
The FILTER function, on the other hand, can filter an array of values by a criteria. The FILTER function accepts three (required) arguments:
- An array to be filtered
- An array of Boolean values to identify the filtered values
- A return value if there are no other values left
For example, the following formula returns an array of values in a named range Name, where the values of the range Type is equal to the value of the DropdownType. Here, DropdownType is a single value, while «Name» and «Type» are ranges.
=FILTER(Name,Type=DropdownType,»No Name Found»)
In the screenshot below, DropdownType is equal to «FIRE». Thus, only two values, «Arcanine» and «Entei», are returned by the formula.
Finalizing the structure
After this brief introduction, we can now create our dynamic drop down list Excel.
Create a higher level drop down containing the unique values
First step is creating a unique list of types and bind them to a drop down. In our example, we used the UNIQUE function on cell E4. The UNIQUE function spills its return array through the rest of the column.
Next is binding the spilled array into a drop down. To do this,
- Select a cell to make a drop down.
- Go to Data Validation
- Select List under Allow
- Type in your cell reference with the UNIQUE formula with a # character. This is =E4# in our example.
The # is the spill operator which saves us from guessing the size of the outcome array. Using # you can get all items returned from the UNIQUE formula.
Create dynamic drop down with a dynamic list
This is where the FILTER function comes in. In our example, we named the ranges and used them in the formulas.
- Type dropdown (H7) as DropdownType
- List of types (C4:C17) as Type
- List of names (B4:B17) as Name
Our formula in this example is in cell E15:
=FILTER(Name,Type=DropdownType,»No Name Found»)
The drop down procedure is very similar to previous one. The only difference is the reference of the cell contains the FILTER, =E15#.
That’s all!
Расширенный фильтр в Excel предоставляет более широкие возможности по управлению данными электронных таблиц. Он более сложен в настройках, но значительно эффективнее в действии.
С помощью стандартного фильтра пользователь Microsoft Excel может решить далеко не все поставленные задачи. Нет визуального отображения примененных условий фильтрации. Невозможно применить более двух критериев отбора. Нельзя фильтровать дублирование значений, чтобы оставить только уникальные записи. Да и сами критерии схематичны и просты. Гораздо богаче функционал расширенного фильтра. Присмотримся к его возможностям поближе.
Как сделать расширенный фильтр в Excel?
Расширенный фильтр позволяет фильтровать данные по неограниченному набору условий. С помощью инструмента пользователь может:
- задать более двух критериев отбора;
- скопировать результат фильтрации на другой лист;
- задать условие любой сложности с помощью формул;
- извлечь уникальные значения.
Алгоритм применения расширенного фильтра прост:
- Делаем таблицу с исходными данными либо открываем имеющуюся. Например, так:
- Создаем таблицу условий. Особенности: строка заголовков полностью совпадает с «шапкой» фильтруемой таблицы. Чтобы избежать ошибок, копируем строку заголовков в исходной таблице и вставляем на этот же лист (сбоку, сверху, снизу) или на другой лист. Вносим в таблицу условий критерии отбора.
- Переходим на вкладку «Данные» — «Сортировка и фильтр» — «Дополнительно». Если отфильтрованная информация должна отобразиться на другом листе (НЕ там, где находится исходная таблица), то запускать расширенный фильтр нужно с другого листа.
- В открывшемся окне «Расширенного фильтра» выбираем способ обработки информации (на этом же листе или на другом), задаем исходный диапазон (табл. 1, пример) и диапазон условий (табл. 2, условия). Строки заголовков должны быть включены в диапазоны.
- Чтобы закрыть окно «Расширенного фильтра», нажимаем ОК. Видим результат.
Верхняя таблица – результат фильтрации. Нижняя табличка с условиями дана для наглядности рядом.
Как пользоваться расширенным фильтром в Excel?
Чтобы отменить действие расширенного фильтра, поставим курсор в любом месте таблицы и нажмем сочетание клавиш Ctrl + Shift + L или «Данные» — «Сортировка и фильтр» — «Очистить».
Найдем с помощью инструмента «Расширенный фильтр» информацию по значениям, которые содержат слово «Набор».
В таблицу условий внесем критерии. Например, такие:
Программа в данном случае будет искать всю информацию по товарам, в названии которых есть слово «Набор».
Для поиска точного значения можно использовать знак «=». Внесем в таблицу условий следующие критерии:
Excel воспринимает знак «=» как сигнал: сейчас пользователь задаст формулу. Чтобы программа работала корректно, в строке формул должна быть запись вида: =»=Набор обл.6 кл.»
После использования «Расширенного фильтра»:
Теперь отфильтруем исходную таблицу по условию «ИЛИ» для разных столбцов. Оператор «ИЛИ» есть и в инструменте «Автофильтр». Но там его можно использовать в рамках одного столбца.
В табличку условий введем критерии отбора: =»=Набор обл.6 кл.» (в столбец «Название») и =»<10″ (в столбец «Цена»). То есть программа должна отобрать те значения, содержащие ТОЧНО информацию о товаре «Набор обл.6 кл.» ИЛИ информацию по товарам, цена которых <10.
Обратите внимание: критерии необходимо записать под соответствующими заголовками в РАЗНЫХ строках.
Результат отбора:
Расширенный фильтр позволяет использовать в качестве критерия формулы. Рассмотрим пример.
Отбор строки с максимальной задолженностью: =МАКС(Таблица1[Задолженность]).
Таким образом мы получаем результаты как после выполнения несколько фильтров на одном листе Excel.
Как сделать несколько фильтров в Excel?
Создадим фильтр по нескольким значениям. Для этого введем в таблицу условий сразу несколько критерий отбора данных:
Применим инструмент «Расширенный фильтр»:
Теперь из таблицы с отобранными данными извлечем новую информацию, отобранную по другим критериям. Например, только отгрузки за 2014 год.
Вводим новый критерий в табличку условий и применяем инструмент фильтрации. Исходный диапазон – таблица с отобранными по предыдущему критерию данными. Так выполняется фильтр по нескольким столбцам.
Чтобы использовать несколько фильтров, можно сформировать несколько таблиц условий на новых листах. Способ реализации зависит от поставленной пользователем задачи.
Как сделать фильтр в Excel по строкам?
Стандартными способами – никак. Программа Microsoft Excel отбирает данные только в столбцах. Поэтому нужно искать другие решения.
Приводим примеры строковых критериев расширенного фильтра в Excel:
- Преобразовать таблицу. Например, из трех строк сделать список из трех столбцов и к преобразованному варианту применить фильтрацию.
- Использовать формулы для отображения именно тех данных в строке, которые нужны. Например, сделать какой-то показатель выпадающим списком. А в соседнюю ячейку ввести формулу, используя функцию ЕСЛИ. Когда из выпадающего списка выбирается определенное значение, рядом появляется его параметр.
Чтобы привести пример как работает фильтр по строкам в Excel, создадим табличку:
Для списка товаров создадим выпадающий список:
Над таблицей с исходными данными вставим пустую строку. В ячейки введем формулу, которая будет показывать, из каких столбцов берется информация.
Рядом с выпадающим списком ячейку введем следующую формулу: Ее задача – выбирать из таблицы те значения, которые соответствуют определенному товару
Скачать примеры расширенного фильтра
Таким образом, с помощью инструмента «Выпадающий список» и встроенных функций Excel отбирает данные в строках по определенному критерию.