Выпадающие списки в Microsoft Excel экономят время и снижают риск ошибок при вводе данных. Но что делать, если нужно показать пользователю не весь список, а только те элементы, которые соответствуют определённому условию? Например, при выборе региона отобразить только его города, или при указании категории товара — только релевантные подкатегории. Эта задача решается несколькими способами, от простых формул до продвинутых инструментов вроде Power Query или Office Scripts.
В современных версиях Excel (2019–2026) появились новые функции, упрощающие динамическую фильтрацию списков, но даже в Excel 2016 или Excel 2013 можно реализовать подобную логику с помощью комбинации ДВПР, ИНДЕКС/ПОИСКПОЗ или сводных таблиц. Главное — понимать принципы работы зависимых списков и правильно организовывать исходные данные. В этой статье разберём все актуальные методы, от базовых до автоматизированных, с примерами формул и пошаговыми инструкциями.
Если вы никогда не создавали выпадающие списки в Excel, рекомендуем сначала ознакомиться с базовым руководством по функции Проверка данных (Data Validation). Без этого будет сложно разобраться в нюансах динамической фильтрации. Также убедитесь, что ваши данные структурированы: каждый столбец должен содержать уникальный тип информации (например, отдельно регионы, отдельно города), а строки не должны иметь пустых ячеек или дубликатов.
1. Базовый метод: функция ПРОСМОТРХ (XLOOKUP) для зависимых списков
Функция ПРОСМОТРХ (или XLOOKUP в английской версии), появившаяся в Excel 365 и Excel 2021, стала революционным инструментом для работы с зависимыми данными. Она позволяет извлекать значения из таблицы по критерию и возвращать не только первое совпадение, но и целый диапазон. Это идеально подходит для создания динамических выпадающих списков.
Допустим, у вас есть таблица с регионами и городами:
| Регион | Город |
|---|---|
| Центральный | Москва |
| Центральный | Тверь |
| Северо-Западный | Санкт-Петербург |
| Северо-Западный | Мурманск |
Чтобы при выборе региона в ячейке A1 в ячейке B1 появился выпадающий список с соответствующими городами, выполните следующие шаги:
- Создайте именованный диапазон для городов с формулой:
=ФИЛЬТР(Таблица1[Город];Таблица1[Регион]=A1)(где
Таблица1— имя вашей таблицы с данными). - В ячейке
B1настройте проверку данных (Data Validation) с типомСписоки укажите в качестве источника созданный именованный диапазон.
Если у вас Excel 2019 или более ранняя версия, замените ФИЛЬТР на комбинацию ИНДЕКС/ПОИСКПОЗ с массивом:
=ИНДЕКС(Таблица1[Город]; ПОИСКПОЗ(0; (Таблица1[Регион]=A1) * (СТРОКА(Таблица1[Город])-MIN(СТРОКА(Таблица1[Город]))) + 1; 0))
⚠️ Внимание: В Excel 2016 и старше формулы массива требуют подтверждения клавишами Ctrl+Shift+Enter. Если забыть это сделать, результат будет некорректным.
2. Использование функции ФИЛЬТР (FILTER) для динамических списков
Функция Предположим, у вас есть таблица с данными о продуктах:
Чтобы при выборе категории в Создать именованный диапазон для подкатегорий с формулой Настроить проверку данных в ячейке B1 с источником из именованного диапазона Повторить шаг 1 для наименований, используя условие Убедиться, что в таблице нет пустых строк или дубликатов--> Преимущество этого метода — автоматическое обновление списков при добавлении новых строк в исходную таблицу. Однако в Excel 2019 и старше функция ФИЛЬТР недоступна, поэтому придётся использовать альтернативные подходы.
Если вам нужно не только отображать данные по условию, но и анализировать их, сводные таблицы ( Алгоритм настройки:
Теперь при выборе региона в срезе сводная таблица будет показывать только соответствующие города. Чтобы использовать эти данные в выпадающем списке:
Когда данные хранятся в разных источниках (например, в нескольких листах или внешних файлах), или требуется предварительная обработка (объединение, очистка), Power Query становится незаменимым инструментом. С его помощью можно создать зависимые списки даже для неструктурированных данных.
Пример задачи: у вас есть два листа — Теперь можно создать выпадающий список на основе отфильтрованной таблицы. Преимущество этого метода — гибкость: вы можете добавлять новые столбцы, трансформировать данные и даже подгружать их из внешних баз.
Чтобы изменения в исходных данных отобразились в зависимых списках, нажмите Если вам нужна максимальная гибкость или работаете с устаревшими версиями Excel (2010–2013), VBA-макросыФИЛЬТР (FILTER), доступная в Excel 365 и Excel 2021, позволяет создавать динамические массивы данных, которые автоматически обновляются при изменении условия. Это самый простой способ реализовать зависимый выпадающий список без сложных конструкций.
Категория Подкатегория Наименование Электроника Смартфоны iPhone 15 Электроника Ноутбуки MacBook Pro Бытовая техника Холодильники Samsung RB30 A1 в B1 отображались только релевантные подкатегории, а в C1 — конкретные наименования, выполните следующие действия:
=ФИЛЬТР(Таблица1[Подкатегория];Таблица1[Категория]=A1)Таблица1[Подкатегория]=B13. Зависимые списки через сводные таблицы и срезы
PivotTable) с срезами (Slicers) станут мощным инструментом. Этот метод подходит для больших наборов данных и позволяет визуально фильтровать информацию без формул.
Регион в область Строки, а поле Город — в область Значения (с функцией Количество).Регион (Insert Slicer).
⚠️ Внимание: Срезы не обновляют данные в реальном времени при изменении исходной таблицы. После добавления новых строк необходимо вручную обновить сводную таблицу (
ПКМ → Обновить).4. Power Query для сложных зависимостей
Регионы и Города, связанные по идентификатору. Чтобы создать выпадающий список городов в зависимости от выбранного региона:
Power Query (Данные → Получить данные → Из других источников → Пустая запрос).ID_региона) с помощью операции Merge Queries.Как обновить данные в Power Query после изменений?
Данные → Обновить все или настройте автоматическое обновление при открытии файла (Свойства связи → Обновлять каждые X минут).5. VBA-макросы для автоматизации зависимых списков
Пример кода для двух уровней (регион → город):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngRegion As Range, rngCity As Range
Set rngRegion = Range("A1")
Set rngCity = Range("B1")
If Not Intersect(Target, rngRegion) Is Nothing Then
rngCity.Validation.Delete
rngCity.ClearContents
If rngRegion.Value <> "" Then
rngCity.Validation.Add Type:=xlValidateList, _
Formula1:="=ИНДЕКС(Города;ПОИСКПОЗ(""&A1&"";Регионы;0);0)"
End If
End If
End Sub
Этот код размещается в модуле листа (Alt+F11 → ЭтотКнига → Лист1) и срабатывает при изменении ячейки A1. Для работы макроса необходимо:
- 📌 Создать именованные диапазоны
РегионыиГорода. - 📌 Включить поддержку макросов в настройках Excel (
Файл → Параметры → Центр управления безопасностью → Параметры центра → Включить все макросы). - 📌 Сохранить файл в формате
.xlsm.
⚠️ Внимание: Макросы могут конфликтовать с другими надстройками Excel. Перед использованием VBA на рабочем файле протестируйте код на копии данных.
6. Office Scripts для Excel Online
Если вы работаете в Excel для веба (Excel Online), стандартные методы с Проверкой данных могут не работать из-за ограничений браузерной версии. В этом случае на помощь приходят Office Scripts — аналог VBA для облачного Excel.
Чтобы создать зависимый список в Excel Online:
- Перейдите на вкладку
Автоматизацияи запишите новый скрипт. - Используйте следующий код для фильтрации списка городов по выбранному региону:
function main(workbook: ExcelScript.Workbook) {let sheet = workbook.getActiveWorksheet();
let region = sheet.getRange("A1").getValue() as string;
let citiesRange = sheet.getRange("Города[Город]");
let cities = citiesRange.getValues() as string[][];
let filteredCities = cities.filter(row => row[0].includes(region));
sheet.getRange("B1").setValues(filteredCities);
}
- Привяжите скрипт к изменению ячейки
A1.
Office Scripts поддерживают TypeScript, что позволяет реализовывать сложную логику, включая асинхронные запросы к внешним API. Однако для работы скриптов требуется подписка Microsoft 365 и современный браузер (Edge, Chrome, Safari).
Сравнение методов: какой выбрать?
Выбор метода зависит от версии Excel, сложности задачи и ваших навыков. Ниже представлена сравнительная таблица:
| Метод | Поддерживаемые версии | Сложность | Автообновление | Применимость |
|---|---|---|---|---|
ПРОСМОТРХ + ФИЛЬТР |
Excel 365, 2021 | Низкая | Да | Простые зависимые списки |
ИНДЕКС/ПОИСКПОЗ |
Excel 2013–2019 | Средняя | Да | Списки средней сложности |
| Сводные таблицы | Все версии | Низкая | Ручное | Аналитика + фильтрация |
| Power Query | Excel 2016+ | Высокая | Да | Сложные трансформации данных |
| VBA | Excel 2010+ | Высокая | Да | Любые задачи, включая мультиуровневые списки |
Для большинства пользователей Excel 365 оптимальным решением станет комбинация ФИЛЬТР + Проверка данных. Если вы работаете с устаревшими версиями, обратите внимание на ИНДЕКС/ПОИСКПОЗ или сводные таблицы. Для корпоративных задач с большими объёмами данных рекомендуется Power Query.
FAQ: Частые вопросы по зависимым спискам в Excel
Можно ли сделать зависимый список без формул?
Да, с помощью сводных таблиц и срезов. Создайте сводную таблицу, добавьте срез для первого уровня (например, регионов), затем свяжите второй выпадающий список с отфильтрованными данными сводной таблицы. Минус метода — ручное обновление при изменении исходных данных.
Почему в зависимом списке появляются пустые строки?
Это происходит, если в исходной таблице есть пустые ячейки или формула возвращает ошибки. Используйте конструкцию =ЕСЛИОШИБКА(ФИЛЬТР(...);"") или очищайте данные через Power Query. Также проверьте, нет ли скрытых символов (пробелов, неразрывных пробелов) в ячейках.
Как сделать трехуровневый зависимый список (страна → регион → город)?
Для этого последовательно применяйте функцию ФИЛЬТР:
- Список регионов фильтруется по стране (
=ФИЛЬТР(Регионы; Страны=A1)). - Список городов фильтруется по региону (
=ФИЛЬТР(Города; Регионы=B1)).
В Excel 2019 и старше используйте вложенные ИНДЕКС/ПОИСКПОЗ или VBA.
Можно ли импортировать зависимые списки из внешнего источника (SQL, API)?summary>
Да, с помощью Power Query. Подключитесь к внешнему источнику (Данные → Получить данные → Из базы данных/SQL/Веб), загрузите данные в модель, затем используйте их для создания зависимых списков через ФИЛЬТР или сводные таблицы. Для API потребуется написать запрос на M (язык Power Query) или использовать Office Scripts в Excel Online.
Данные → Получить данные → Из базы данных/SQL/Веб), загрузите данные в модель, затем используйте их для создания зависимых списков через ФИЛЬТР или сводные таблицы. Для API потребуется написать запрос на M (язык Power Query) или использовать Office Scripts в Excel Online.Почему зависимый список не обновляется при изменении главного?
Возможные причины:
- 🔹 В Excel 2019 и старше не включён динамический массив (проверьте настройки в
Файл → Параметры → Формулы). - 🔹 Формула возвращает ошибку (например,
#ЗНАЧ!из-за неверного диапазона). - 🔹 В настройках
Проверки данныхуказан статический диапазон вместо формулы. - 🔹 Для
Power Queryили сводных таблиц не выполнено обновление данных.
Проверьте каждый пункт и обновите зависимости (Формулы → Вычислить или Данные → Обновить все).