Как создать зависимые выпадающие списки в Google Sheets

Кратко о задаче
Зависимый выпадающий список — это элемент формы, при котором выбор в первом списке определяет набор опций во втором. Это удобно для категорий и подкатегорий: продукты → конкретные блюда, марка авто → модель, раздел сайта → страницы. В Google Sheets зависимость реализуют через именованные диапазоны и функцию INDIRECT или альтернативы.
Важно: в примерах ниже используются названия списков «Entree» и «Dessert». Вы можете заменить их на свои имена. Если имена содержат пробелы или специальные символы, см. раздел «Проблемы и обходы».
Содержимое статьи (навигация)
- Подготовка элементов списков
- Именование диапазонов
- Создание первого выпадающего списка
- Вставка функции INDIRECT
- Создание зависимого выпадающего списка
- Частые ошибки и способы устранения
- Альтернативные подходы
- Контроль качества и чек-лист
- Краткое резюме
Подготовка элементов списков
- Создайте таблицу с заголовками для каждого набора опций. Можно держать элементы на отдельном листе, чтобы они не мешали рабочей таблице.
- Структура простая: в строке заголовков укажите категории (например, D3:E3 — Entree и Dessert). Ниже перечислите элементы каждой категории в отдельных столбцах.
Пример разметки:
- D3: Entree
- D4..D8: список блюд
- E3: Dessert
- E4..E7: список десертов
Вы решили вставлять выпадающие списки в ячейки A2 (первый список) и B2 (зависимый список). Это удобно для теста и демонстрации.
Именование диапазонов
Чтобы второй список мог подтягивать значения в зависимости от выбора, каждому набору опций даём имя (named range).
- Выделите ячейки со списком без заголовка (например, D4:D8 для Entree).
- В меню выберите Data → Named ranges.

- В боковой панели укажите имя диапазона. Имя должно совпадать с текстом, который будет в первом выпадающем списке. В примере это Entree.

- Оставьте боковую панель открытой, выделите второй набор ячеек (например, E4:E7) и нажмите Add a range.

- Назовите второй диапазон в точности как заголовок второй категории — в нашем примере Dessert — и нажмите Done.

- После создания названий закройте панель. Именованные диапазоны можно в любой момент изменить или удалить.

Совет: используйте короткие, уникальные имена без пробелов и специальных символов (только буквы, цифры и подчеркивания). Это уменьшит вероятность ошибок при использовании INDIRECT.
Создание первого выпадающего списка
- Выделите ячейку для первого списка (A2 в примере).
- В меню выберите Data → Data validation.

- В поле Criteria выберите List from a range и введите диапазон с заголовками (в нашем примере D3:E3).
- Отметьте Show dropdown list in cell и при желании задайте поведение для неверных данных и текст подсказки.
- Нажмите Save.

Результат: в A2 появится выпадающий список с элементами «Entree» и «Dessert».
Вставка функции INDIRECT
Для формирования диапазона второго списка используем формулу INDIRECT, которая преобразует текст (имя диапазона) в ссылку.
- На пустой ячейке введите формулу, заменив адрес на вашу ячейку первого списка (в примере — A2):
=INDIRECT(A2)- При выборе в A2 значения «Entree» в ячейке с формулой появятся элементы, содержащиеся в именованном диапазоне Entree. При выборе «Dessert» появятся элементы диапазона Dessert.

Примечание: если в A2 пусто или содержится некорректное значение, INDIRECT даст ошибку. Это нормальное поведение — формула ожидает валидное имя диапазона.
Создание зависимого выпадающего списка
- Выделите ячейку для зависимого списка (B2 в примере).
- Снова откройте Data → Data validation.
- В Criteria выберите List from a range и введите ссылку на ячейку, где вы написали формулу INDIRECT (или прямо используйте INDIRECT(A2) как ссылку, если предпочитаете).
Важно: в окне Data validation Google Sheets ожидает диапазон или ссылку; если вводите формулу, убедитесь, что она возвращает диапазон. В простейшем варианте введите адрес ячейки с уже посчитанным массивом из INDIRECT.
- Установите Show dropdown list in cell и другие параметры по желанию. Нажмите Save.

- Проверьте: выберите Entree в A2 и убедитесь, что в B2 видны соответствующие варианты.

- Повторно выберите другой элемент в A2 и убедитесь, что B2 обновляется.

Совет: если ваш второй список длинный, используйте сортировку или фильтрацию (SORT/UNIQUE) в промежуточной ячейке, чтобы отображать чистый, отсортированный набор.
Частые ошибки и способы устранения
- Ошибка #REF или #NAME в INDIRECT: проверьте, что имя диапазона существует и написано точно так же, как значение в первом списке.
- Пробелы в именах: Google Sheets не разрешает пробелы в именах диапазонов. Либо используйте подчеркивания в именах, либо используйте формулу SUBSTITUTE для преобразования текста перед INDIRECT: =INDIRECT(SUBSTITUTE(A2,” “,”_”))
- Пустая ячейка в первом списке вызывает ошибку в INDIRECT: добавьте защиту через IFERROR или условный результат по умолчанию. Пример:
=IF(A2="","",INDIRECT(A2))- Множественный выбор: стандартные выпадающие списки поддерживают только одиночный выбор. Для множественного выбора используйте скрипт Apps Script или сторонние аддоны.
- Права доступа: если диапазоны находятся на другом листе, убедитесь, что пользователь имеет доступ к таблице. Иначе именованные диапазоны не будут доступны.
Важно: при копировании списков на другие листы относительные ссылки и именованные диапазоны ведут себя по-разному. Проверьте адреса после копирования.
Альтернативные подходы
Если INDIRECT по какой-либо причине не подходит (например, имена содержат пробелы, или вы хотите динамически строить диапазон), используйте один из вариантов:
- FILTER + INDEX
- Постройте единый столбец с парой «категория — значение» и фильтруйте по выбранной категории: =FILTER(values_range, categories_range=A2)
- QUERY
- Используйте QUERY для выборки по условию и сортировки: =QUERY(таблица,”select Col2 where Col1=’”&A2&”‘“,0)
VLOOKUP с массивами (менее универсально)
Apps Script
- Скрипт может динамически менять правило проверки данных в ячейке, подставляя точный диапазон при каждом выборе. Это полезно для сложных UI-решений и множественного выбора.
Когда INDIRECT удобен: простая структура именованных диапазонов, отсутствие пробелов в именах, небольшое количество данных. Когда FILTER/QUERY лучше: данные нормализованы в едином листе и требуется более гибкая логика выборки.
Ментальная модель и рекомендации
Ментальная модель: думайте о первом списке как о «ключе» (ключевая категория), а о втором — как о «значении» (набор подкатегорий). INDIRECT — это мост, который переводит текст-ключ в адрес значения.
Хорошие практики:
- Держите справочные списки на отдельном листе и защищайте их от случайного редактирования.
- Используйте короткие имена диапазонов без пробелов.
- Добавляйте валидацию и подсказки для пользователей.
- Тестируйте на мобильной версии Google Sheets — поведение выпадающих списков может отличаться.
Чек-лист перед деплоем (рольная разбивка)
Администратор:
- Все списки перенесены на отдельный лист
- Именованные диапазоны созданы и проверены
- Лист защищён от редактирования для обычных пользователей
Редактор/Контент-менеджер:
- Проверил соответствие элементов в списках
- Убедился, что заголовки совпадают с именами диапазонов
- Добавил подсказки валидации
Пользователь:
- Получил инструкции по использованию
- Проверил работу списков на своих правах доступа
Проверочные тесты и критерии приёмки
Критерии приёмки:
- При выборе «Entree» в первом списке во втором отображается только набор Entree.
- При переключении на «Dessert» второй список автоматически обновляется.
- Пустой или неверный выбор в первом списке не приводит к необработанным ошибкам в рабочем листе (IFERROR или пустое значение).
- Права доступа не мешают просмотру именованных диапазонов.
Тест-кейсы:
- Выбрать Entree → проверить, что все ожидаемые элементы видны.
- Выбрать Dessert → проверить обновление.
- Очистить A2 → убедиться, что B2 остаётся пустым или не даёт ошибку.
- Попробовать выбрать несуществующую запись (если доступно) → ожидаем валидацию/предупреждение.
Примеры расширенной реализации
- Динамические диапазоны: используйте формулы типа OFFSET+COUNTA или именованные диапазоны с диапазоном, который расширяется автоматически.
- Сортировка и удаление дубликатов: комбинируйте UNIQUE и SORT перед тем, как подавать массив в валидацию: =SORT(UNIQUE( FILTER(…)))
- Множественные зависимые уровни: для трёхуровневой иерархии повторите схему — каждому уровню свой именованный диапазон и свое INDIRECT/QUERY.
Mermaid — простая логика выбора для внедрения зависимостей:
flowchart TD
A[Выбор в первом списке] --> B{Проверить имя диапазона}
B -- Существует --> C[INDIRECT возвращает диапазон]
B -- Не существует --> D[Показать пустой список / сообщение об ошибке]
C --> E[Установить правило проверки данных для второй ячейки]
D --> EСоветы по локализации и совместимости
- Имена диапазонов из латиницы надёжнее при обмене файлами между локализациями. Если ваши пользователи работают на разных языках, используйте универсальные идентификаторы (например, entree_menu вместо Entree) и отображайте человекочитаемые названия в первом списке.
- Учтите, что правила валидации и текст подсказок будут локализованы только в том языке, где редактировалась таблица.
Краткое резюме
Создание зависимых выпадающих списков в Google Sheets — простая и мощная техника для контроля ввода данных. Основные шаги:
- Подготовьте списки и заголовки.
- Создайте именованные диапазоны для каждой группы опций.
- Сделайте первый выпадающий список по заголовкам.
- Используйте INDIRECT (или FILTER/QUERY) чтобы получить диапазон для второго списка.
- Пропишите проверку данных для второй ячейки и протестируйте.
Важно: если требуется более сложная логика (многоуровневые зависимости, множественный выбор), рассмотрите Apps Script или объединение таблиц через FILTER/QUERY.
Примечание: перед массовым внедрением проверяйте поведение на устройствах и у пользователей с разными правами доступа.
Краткое руководство готово — теперь вы можете внедрить зависимые выпадающие списки в своих таблицах и сократить число ошибок при вводе данных.
Похожие материалы
Быстрые ярлыки Xbox: поиск и доступность
Как уменьшить размытие движения на телевизоре и мониторе
Piwigo на Raspberry Pi: установка и руководство
Поиск фото на iPhone: советы и фильтры
SketchUp: бесплатная версия и как начать