Гид по технологиям

Функция INDIRECT в Excel: как использовать и когда избегать

6 min read Excel Обновлено 14 Dec 2025
INDIRECT в Excel — руководство и примеры
INDIRECT в Excel — руководство и примеры

Логотип Excel с водяным знаком прогрессирующего графика.

Excel предоставляет разные функции для анализа данных. Одна из гибких — INDIRECT: она позволяет ссылаться на ячейки на основе изменяющихся условий и делает таблицы более динамичными и универсальными.

Коротко: что делает INDIRECT

INDIRECT принимает текстовую строку и интерпретирует её как ссылку на ячейку, диапазон или именованный диапазон. Это значит, что вы можете строить адреса ссылок программно — из других ячеек, из результатов функций или из имен — и получать значения по этим адресам.

Определение в одну строку: INDIRECT — функция, которая преобразует текст в действительную ссылку в листе Excel.

Синтаксис

=INDIRECT(ref_text, [A1])
  • ref_text — обязательный аргумент: текстовая строка с действительной ссылкой (например, A1, Sheet1!B2 или имя диапазона Prices).
  • [A1] — необязательный логический аргумент: TRUE для стиля A1 (по умолчанию) или FALSE для R1C1.

Примеры ниже используют стиль A1, если не указано иное.

Примеры использования

1. Получение значения по имени товара

Предположим, товары в столбце A (A2:A8), цены — в столбце B (B2:B8). В D2 указано имя товара, например, Apples. Формула ниже вернёт цену этого товара:

=INDIRECT("B" & MATCH(D2, A2:A8, 0))

Получение соответствующих значений с помощью INDIRECT в Excel

Как это работает:

  • MATCH(D2, A2:A8, 0) находит номер строки, где расположен товар.
  • “B” & MATCH(…) создаёт строку типа “B5”.
  • INDIRECT(“B5”) возвращает значение из ячейки B5 — цену.

Совет: если список товаров сортируется или перемещается, лучше использовать MATCH вместе с INDEX (альтернатива ниже) — это надёжнее при изменении структуры таблицы.

2. Сумма по динамическому диапазону

Если вам нужно суммировать фиксированный по адресу диапазон A1:A7, можно сделать так:

=SUM(INDIRECT("A1:A7"))

Сложение диапазона ячеек в Excel с помощью INDIRECT

INDIRECT позволяет задавать этот диапазон в виде текста в другой ячейке, например, если в G1 хранится строка “A1:A7”:

=SUM(INDIRECT(G1))

3. Ссылка на именованный диапазон

Если в книге определён именованный диапазон Week1, который указывает на B2:B6, и в ячейке F2 записано имя этого диапазона (Week1), то формула

=AVERAGE(INDIRECT(F2))

возвращает среднее значение для Week1.

Пример использования INDIRECT для именованного диапазона

4. Ссылка на другой лист

Если в книге есть лист CityData и на нём в C6 хранится население Киншасы, то в листе Report можно вставить:

=INDIRECT("CityData!C6")

Образец листа с информацией по городам

Образец листа, где делается ссылка на другой лист

Это удобно, когда название листа хранится в ячейке, например в H1, и формула строит ссылку динамически:

=INDIRECT(H1 & "!C6")

Если в H1 написано CityData, формула вернёт CityData!C6.

5. Комбинирование с другими функциями

INDIRECT часто используют вместе с ADDRESS, CONCAT и другими текстовыми функциями:

=INDIRECT(ADDRESS(ROW()-1, COLUMN()+2))

Эта формула может ссылаться на соседние ячейки динамически, строя адрес через ADDRESS.

Частые ошибки и как их исправить

  • #REF! — неверная текстовая ссылка: проверьте, что ref_text действительно соответствует существующей ячейке/диапазону.
  • Ошибки при ссылке на другой рабочий файл: INDIRECT не работает с закрытыми внешними книгами. Для кросс‑файловых ссылок файл должен быть открыт.
  • Ошибки регистра: имена диапазонов в Excel не чувствительны к регистру, но путь листа/файла должен быть корректным.

Проверка: поместите в отдельную ячейку текст ссылки и смотрите, меняется ли значение при изменении текста.

Когда стоит избегать INDIRECT

  • Большие таблицы и частые перерасчёты: INDIRECT — волатильная функция, она заставляет Excel пересчитывать формулу при любом изменении книги, что может снизить производительность.
  • Кросс‑файловые ссылки с закрытыми книгами: если вам нужны ссылки на закрытые внешние файлы, используйте альтернативы (например, Power Query или динамические внешние запросы).
  • Если структура таблицы часто меняется (вставки/удаления столбцов): лучше пользоваться индексами (INDEX) и структурированными таблицами.

Альтернативы и рекомендации

  • INDEX вместо INDIRECT + MATCH — менее волатильное и более стабильное решение:
=INDEX(B2:B8, MATCH(D2, A2:A8, 0))
  • Структурированные таблицы (Ctrl+T) и имена столбцов: ссылаться на [TableName[Column]] удобнее и устойчивее при изменении размера таблицы.
  • OFFSET похож на INDIRECT, но тоже волатилен; предпочитайте INDEX.
  • Для кросс‑файловых ссылок используйте Power Query или VBA, если не хотите открывать файлы.

Производительность и волатильность

INDIRECT является волатильной: Excel пересчитывает её при любом изменении в книге. Для маленьких листов это незаметно, но для больших моделей это может вызвать значительные задержки.

Рекомендации по производительности:

  • Используйте INDEX/MATCH, если возможно.
  • Ограничьте область применения INDIRECT к небольшим диапазонам.
  • Пересмотрите расчёт книги: поставьте режим расчёта на вручную при больших отчётах (Formulas → Calculation Options → Manual) и пересчитывайте по необходимости.

Практический чек-лист перед использованием INDIRECT

  • Нужно ли динамическое построение самой ссылки? Если да — продолжайте.
  • Можно ли заменить INDEX/MATCH или структурированными таблицами? Если да — рассмотрите замену.
  • Будет ли книга часто пересчитываться и велики ли объёмы данных? Если да — протестируйте производительность.
  • Требуется ли ссылка на закрытый внешний файл? Если да — INDIRECT не подойдёт.

Специальные сценарии и советы

  • R1C1 стиль: если вы используете R1C1, укажите второй аргумент как FALSE:
=INDIRECT("R2C3", FALSE)
  • Динамические именованные диапазоны: можно записывать формулу имени вида =OFFSET(Sheet1!$A$1,0,0,COUNTA(Sheet1!$A:$A)) и затем обращаться через INDIRECT.
  • Безопасность: INDIRECT не даёт дополнительных привилегий — он лишь интерпретирует строку как ссылку. Будьте осторожны с пользовательским вводом, который формирует ref_text (внедрение ссылок на неожиданные листы/диапазоны).

Краткий контрольный пример: динамическая сводка городов

Задача: в ячейке J1 хранится название листа с данными (например, CityData), в ячейке J2 — номер строки, в J3 — колонка (буква). Нужно вывести значение ячейки из указанного листа.

Формула:

=INDIRECT(J1 & "!" & J3 & J2)

Если J1=CityData, J3=C, J2=6 → INDIRECT(“CityData!C6”).

Как избежать ошибок при вводе названий листов с пробелами

Если имя листа содержит пробелы, оборачивайте его в апострофы:

=INDIRECT("'" & H1 & "'!C6")

Где H1 может содержать “City Data”.

Ментальные модели и приёмы

  • Модель «текст → ссылка → значение»: представьте, что INDIRECT переводит текстовую метку в дверь (ссылку) и открывает её, чтобы взять значение внутри.
  • Правило 80/20: используйте INDIRECT там, где он даёт явное сокращение ручной работы или поддерживает конструктируемые отчёты; в остальных случаях — INDEX.

Решение: использовать или нет? (решающее дерево)

flowchart TD
  A[Нужно ли динамически формировать адрес ячейки?] -->|Нет| B[Не используйте INDIRECT — INDEX/структурированные таблицы]
  A -->|Да| C[Требуется ссылка на внешний закрытый файл?]
  C -->|Да| D[Используйте Power Query или откройте файл]
  C -->|Нет| E[Ожидается большой объём данных и частые перерасчёты?]
  E -->|Да| F[Тестируйте производительность; рассмотрите INDEX]
  E -->|Нет| G[Используйте INDIRECT, соблюдая аккуратность]

Краткий глоссарий

  • INDIRECT: функция, преобразующая текст в ссылку.
  • Волатильность: свойство функции вызывать перерасчёт при любом изменении книги.
  • INDEX/MATCH: комбинация функций для поиска значения по позиции и ключу.

Резюме

  • INDIRECT — мощный инструмент для динамических ссылок и ссылок на именованные диапазоны или разные листы.
  • Избегайте INDIRECT в больших моделях из‑за волатильности; INDEX и структурированные таблицы обычно предпочтительнее.
  • INDIRECT не работает с закрытыми внешними файлами — для этого используйте Power Query или альтернативные подходы.

Важно: перед массовым внедрением протестируйте производительность вашей книги и обдумайте сценарии масштабирования.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Редактирование файла hosts: Windows, macOS, Linux
Администрирование

Редактирование файла hosts: Windows, macOS, Linux

Снижение и мониторинг интернет‑трафика в Firefox
Интернет

Снижение и мониторинг интернет‑трафика в Firefox

Отключить подсказки поиска в Firefox
Браузеры

Отключить подсказки поиска в Firefox

Музыкальный плеер на Python с Tkinter и PyGame
Development

Музыкальный плеер на Python с Tkinter и PyGame

Как исправить grub rescue в Windows 10
Support

Как исправить grub rescue в Windows 10

Будильник iPhone: как не проспать
Советы iPhone

Будильник iPhone: как не проспать