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

Как использовать INDIRECT в Excel

• 9 min read • Excel • Обновлено 11 Dec 2025
Как использовать INDIRECT в Excel
Как использовать INDIRECT в Excel

Фон: таблица Excel, логотип Excel на переднем плане

Быстрые ссылки

  • Что делает функция INDIRECT
  • Синтаксис INDIRECT
  • Важные замечания перед применением
  • Как использовать INDIRECT с примерами
  • Когда NOT использовать INDIRECT и альтернативы
  • Метод внедрения и чек-листы

Введение

Вы, возможно, часто используете ссылки на ячейки в формулах Excel. Функция INDIRECT идёт дальше: она принимает строку текста и превращает её в ссылку, которую потом используют другие функции. Это открывает гибкие сценарии: динамические ссылки, переключение диапазонов по имени, ссылки на конкретную ячейку в другом листе и т. д.

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

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

Что делает функция INDIRECT

Функция INDIRECT преобразует текстовую строку в ссылку. Практические преимущества:

  • Динамические ссылки: можно менять целевой диапазон без правки основной формулы.
  • Связи между листами: удобно ссылаться на ячейки другого листа через текст с именем листа.
  • Именованные диапазоны: INDIRECT может принимать имя диапазона, хранящееся как текст.
  • Стабильность ссылок: ссылка, созданная через INDIRECT, не изменится при вставке/удалении строк и столбцов так же, как обычные относительные ссылки в некоторых сценариях (зависит от конструкции).

Синтаксис INDIRECT

Синтаксис:

=INDIRECT(x, y)
  • x — текст, который Excel должен интерпретировать как ссылку. Это может быть A1-стиль, R1C1-стиль, имя диапазона или строка, содержащая полную адресацию, например “Sheet2!A1”.
  • y — необязательный логический аргумент: TRUE (или пропуск) = A1-стиль, FALSE = R1C1-стиль.

Примечания:

  • Если x ссылается на другую рабочую книгу, та книга должна быть открыта — Excel не сможет получить ссылку на закрытый файл (за исключением специальных дополнений, например INDIRECT.EXT из Morefunc, но это стороннее решение).
  • В Excel в вебе есть ограничения: некоторые варианты работы с внешними файлами недоступны.

Результат функции — ссылка (reference), которую затем используют внутри других функций.

Важные замечания перед применением

  1. Производительность. INDIRECT — волатильная функция: она пересчитывается при любом пересчёте книги. В больших файлах с сотнями INDIRECT формул это может заметно замедлить работу.
  2. Именованные диапазоны. Чтобы максимально упростить и сделать надёжнее формулы с INDIRECT, полезно заранее знать, как создавать и обновлять именованные диапазоны в книге.
  3. Конкатенация. Оператор & удобен для сборки строк ссылок, например: “B” & A1 или “week_” & F2.
  4. Закрытые книги. Если ссылка указывает на другую книгу, та книга должна быть открыта, иначе INDIRECT вернёт ошибку.
  5. Поддержка структурированных таблиц. INDIRECT не может прямо ссылаться на структурированные имена таблиц таким же образом, как обычные ссылки — есть нюансы при обращении к столбцам таблицы.

Как использовать INDIRECT — основные примеры

Пример 1 — базовый

В ячейке A1 стоит текст D1. Если в B2 написать:

=INDIRECT(A1)

то INDIRECT превратит текст “D1” в ссылку на ячейку D1 и вернёт её значение.

Ячейка A1 содержит

Пример 2 — вложение в другие функции

Если в A2 лежит текст с диапазоном, например “A1:A3”, то:

=SUM(INDIRECT(A2))

посчитает сумму диапазона A1:A3.

Пример: INDIRECT внутри SUM суммирует значения диапазона, заданного текстом в другой ячейке

Пример 3 — ссылка на другой лист

Если на листе Sheet2 в A1 стоит 100, а в текущем листе в A3 записан текст:

Sheet2!A1

То формула

=INDIRECT(A3)

вернёт 100 и будет работать до тех пор, пока Sheet2 открыт в текущей книге.

INDIRECT используется для ссылки на ячейку другого листа

Совет: именованный диапазон надёжнее, чем жёстко прописанное имя листа. Если назвать ячейку Sheet2!A1 как TOTAL, то в A3 можно поместить текст “TOTAL”, а формула INDIRECT(A3) будет работать независимо от переименования листа.

INDIRECT с именованным диапазоном TOTAL

Реальный пример 1 — динамическая средняя по последним трём значениям

Сценарий: у вас список голов команды в столбце B по матчам, нужно вычислять среднее за последние три игры, автоматически обновляемое при добавлении новых строк.

Шаги:

  1. В E1 посчитать количество заполненных ячеек в B:
=COUNT(B:B)

(Если нужно считать и текст — COUNTA.)

  1. В E2 собрать формулу, которая берёт последние три по счёту значения в столбце B, используя INDIRECT:
=AVERAGE(INDIRECT("B"&E1),INDIRECT("B"&E1-1),INDIRECT("B"&E1-2))

Пояснение: если E1 = 8, то “B”&E1 даёт строку “B8”; INDIRECT превращает её в ссылку; таким образом вы берёте B8, B7, B6 и усредняете.

Пример с подсчётом последних трёх значений с INDIRECT

Когда вы добавите новую строку в B, значение в E1 увеличится, ссылки пересчитаются и E2 всегда будет показывать среднее за последние три игры.

Автоматическое обновление среднего при добавлении данных

Реальный пример 2 — INDIRECT вместе с VLOOKUP и именованными диапазонами

Задача: есть два диапазона с данными по неделям (week_1 и week_2). Нужно по имени человека и номеру недели (вводится в отдельной ячейке) возвращать выручку.

  1. Назовите диапазоны: B1:C5 как week_1, B7:C11 как week_2.
  2. В ячейке G2 используйте формулу:
=VLOOKUP(E2,INDIRECT("week_"&F2),2,0)

Здесь E2 — имя человека, F2 — номер недели (1 или 2). INDIRECT(“week_”&F2) преобразует текст “week_1” в реальный диапазон, который VLOOKUP затем использует.

INDIRECT с VLOOKUP и именованными диапазонами

Формулу можно растянуть вниз для других строк — ссылки останутся корректными за счёт относительных ссылок и именованных диапазонов.

Заполнение формулы для остальных строк

Дополнение: для более гибкого UX можно дать пользователю выпадающий список с выбором недели (Data Validation), чтобы избежать опечаток.

Когда NOT использовать INDIRECT — типичные ограничения и контрпримеры

  • Закрытые книги: INDIRECT не работает с диапазонами в закрытых внешних книгах. Контрпример: если нужно брать данные из закрытого файла — используйте Power Query, связки Power BI, или вспомогательный VBA/надстройки.
  • Большие таблицы и производительность: если у вас сотни и тысячи INDIRECT — пересчёт будет дорогим. Альтернатива: INDEX/MATCH, таблицы Excel, структурированные ссылки, или вычисление ссылок через helper-диапазоны и минимальное количество волатильных функций.
  • Динамические массивы и структурированные ссылки: в некоторых ситуациях проще использовать функции типа FILTER, OFFSET (тоже волатильна), или использовать имя диапазона, обновляемое через формулы и функции динамических массивов.

Примеры альтернатив:

  • Для получения последнего значения в столбце: INDEX(B:B,COUNTA(B:B)) вместо INDIRECT(“B”&COUNTA(B:B)). INDEX обычно быстрее и не волатилен.
  • Для выбора диапазона по номеру недели: OFFSET или INDEX в связке с диапазоном, если нужна работа с закрытой книгой — Power Query.

Альтернативные подходы и когда выбирать их

  1. INDEX вместо INDIRECT: INDEX(B:B, n) возвращает n-ю ячейку столбца и не является волатильной.
  2. Таблицы Excel (Insert > Table): структурированные ссылки позволяют ссылаться по имени столбца и автоматически растут при добавлении строк.
  3. Power Query: надёжное получение данных из внешних файлов, в том числе закрытых книг, плюс преобразования.
  4. VBA/макросы: гибко, но требует поддержки и безопасности (макросы отключены у пользователей по умолчанию).
  5. Надстройки (например Morefunc с INDIRECT.EXT): могут расширять возможности, но являются сторонними и требуют установки у каждого пользователя.

Рекомендация: используйте INDIRECT там, где нужна читаемость формулы и небольшое количество ссылок; где же важна скорость или работа с внешними закрытыми источниками — выбирайте INDEX/Power Query.

Мини-методология внедрения INDIRECT в отчётах (шаги)

  1. Оцените объём данных. Если отчёт небольшой — INDIRECT безопасен.
  2. Создайте именованные диапазоны там, где это упростит ссылки и уменьшит риск ошибок при переименовании листов.
  3. Используйте выпадающие списки (Data Validation) для ввода частей ссылок (например, номера недели или имени диапазона).
  4. По возможности оформьте данные как таблицы Excel и используйте структурированные имена.
  5. Тестируйте производительность: добавьте тестовые данные в объёме, близком к максимальному, и проверьте время пересчёта.
  6. Документируйте формулы и дайте краткие описания (в отдельном листе README) о том, где применён INDIRECT и почему.

Чек-листы по ролям

Аналитик:

  • Проверить, что INDIRECT не применяется массово на большом листе.
  • Проверить граничные значения (пустые строки, нечисловые значения).
  • Создать README с описанием именованных диапазонов.

Отчётный разработчик:

  • Применить именованные диапазоны и Data Validation.
  • Подменить INDIRECT на INDEX там, где нужна скорость.
  • Проверить совместимость с Excel для веб.

Системный администратор / владелец книги:

  • Убедиться, что пользователи знают про необходимость открывать внешние книги при использовании INDIRECT.
  • Оценить возможность использования Power Query как альтернативы.

Критерии приёмки

  • Формулы возвращают ожидаемые значения при добавлении/удалении строк.
  • Пересчёт книги остаётся в приемлемых пределах по времени (не более ожидаемо допустимой задержки для пользователей).
  • При переименовании листа именованные диапазоны сохраняют работоспособность формул.
  • Пользовательские входы защищены (есть выпадающие списки или проверки ввода).

Примеры тест-кейсов и приёмо-валидация

  • Добавить 1000 строк данных в тестовой копии и измерить время пересчёта.
  • Переименовать лист, на который ссылались формулы — если использовались текстовые имена листов без именованных диапазонов, формулы должны сломаться; с именованным диапазоном — остаться работающими.
  • Закрыть внешнюю книгу и убедиться, что INDIRECT против неё возвращает ошибку; тест-проход подтверждает ограничение.

Краткий словарь

  • Волатильная функция — функция, которая пересчитывается при любом изменении книги.
  • Именованный диапазон — область ячеек, которой присвоено имя для удобства ссылок.
  • A1-стиль — стандартный стиль адресации, где сначала столбец, затем строка (например A1).
  • R1C1-стиль — адресация, где R — строка, C — столбец (например R1C1).

Советы по отладке и безопасность

  • Используйте инструмент “Evaluate Formula” (Оценить формулу), чтобы пошагово увидеть результат конструкции INDIRECT.
  • Если формула возвращает #REF! — проверьте текстовую строку, генерируемую для ссылки, на синтаксические ошибки и наличие нужного листа/диапазона.
  • Документируйте именованные диапазоны и их назначение, чтобы другие пользователи понимали логику.

Примеры шаблонов и сниппеты

  • Получить последний непустой элемент столбца B:
=INDEX(B:B,COUNTA(B:B))

(альтернатива INDIRECT(“B”&COUNTA(B:B))).

  • Динамический диапазон за N последних строк (с помощью OFFSET — волатилен):
=AVERAGE(OFFSET(B1,COUNTA(B:B)-N,0,N,1))
  • VLOOKUP с именованными диапазонами через INDIRECT (пример из статьи):
=VLOOKUP(E2,INDIRECT("week_"&F2),2,0)

Принципы выбора между INDIRECT и альтернативами

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

Решение проблем производительности

  • Уменьшите количество волатильных функций.
  • Используйте вспомогательные столбцы для расчётов и минимизируйте вложенность INDIRECT.
  • Перенесите тяжёлые вычисления в Power Query или надстройки, если данные внешние.

Mermaid: простое дерево решений для выбора подхода

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

Итог

Функция INDIRECT — мощный инструмент для создания динамических ссылок в Excel. Она упрощает шаблоны, позволяет переключать диапазоны по имени и интегрируется в другие функции (SUM, AVERAGE, VLOOKUP). Но INDIRECT волатилен и не работает с закрытыми внешними книгами, поэтому при масштабных отчётах и интеграциях лучше рассмотреть INDEX, таблицы Excel или Power Query. Документируйте именованные диапазоны и тестируйте производительность при внедрении.

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

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

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

Несколько аккаунтов Skype: Multi Skype Launcher
Программное обеспечение

Несколько аккаунтов Skype: Multi Skype Launcher

Журнал для работы: повысить продуктивность
Productivity

Журнал для работы: повысить продуктивность

Персональные звуки уведомлений на Android
Android.

Персональные звуки уведомлений на Android

Скачивание шоу Hulu для офлайн‑просмотра
Стриминг

Скачивание шоу Hulu для офлайн‑просмотра

Microsoft Start: персонализированная новостная лента
Новости

Microsoft Start: персонализированная новостная лента

Как изменить имя в Epic Games быстро
Гайды

Как изменить имя в Epic Games быстро