Функция Excel ИНДИРЕКТ - основные способы использования и примеры формул

  • Поделись Этим
Michael Brown

В этом учебнике Excel ИНДИРЕКТ объясняется синтаксис функции, основные способы ее использования и приводится ряд примеров формул, демонстрирующих использование ИНДИРЕКТ в Excel.

В Microsoft Excel существует огромное количество функций, одни из которых просты для понимания, другие требуют длительного изучения, а первые используются чаще, чем вторые. И все же, Excel ИНДИРЕКТ - одна из них. Эта функция Excel не выполняет никаких вычислений, не оценивает условия или логические тесты.

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

    Функция Excel ИНДИРЕКТ - синтаксис и основные способы использования

    Как следует из названия, Excel INDIRECT используется для косвенной ссылки на ячейки, диапазоны, другие листы или рабочие книги. Другими словами, функция INDIRECT позволяет создавать динамические ссылки на ячейки или диапазоны вместо их жесткого кодирования. В результате вы можете изменить ссылку в формуле, не изменяя саму формулу. Более того, эти косвенные ссылки не изменятся, когда появятся новые строки или столбцы.вставляются в рабочий лист или при удалении существующих.

    Все это может быть проще понять на примере. Однако, чтобы написать формулу, даже самую простую, нужно знать аргументы функции, не так ли? Поэтому давайте сначала кратко рассмотрим синтаксис Excel INDIRECT.

    Синтаксис функции INDIRECT

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

    INDIRECT(ref_text, [a1])

    ref_text - это ссылка на ячейку, или ссылка на ячейку в виде текстовой строки, или именованный диапазон.

    a1 - логическое значение, определяющее, какой тип ссылки содержится в аргументе ref_text:

    • Если значение TRUE или опущено, ref_text интерпретируется как ссылка на ячейку в стиле A1.
    • Если FALSE, то ref_text рассматривается как ссылка R1C1.

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

    Основное использование функции ИНДИРЕКТ

    Чтобы разобраться в сути функции, давайте напишем простую формулу, демонстрирующую использование INDIRECT в Excel.

    Предположим, в ячейке A1 у вас есть число 3, а текст A1 в ячейке C1. Теперь введите формулу =INDIRECT(C1) в любую другую ячейку и посмотрите, что произойдет:

    • Функция INDIRECT обращается к значению в ячейке C1, которое равно A1.
    • Функция направляется в ячейку A1, где она выбирает возвращаемое значение, которым является число 3.

    Таким образом, в данном примере функция INDIRECT делает следующее преобразование текстовой строки в ссылку на ячейку .

    Если вы считаете, что это все еще имеет очень мало практического смысла, пожалуйста, потерпите, и я покажу вам еще несколько формул, раскрывающих реальную силу функции Excel ИНДИРЕКТ.

    Как использовать INDIRECT в Excel - примеры формул

    Как показано в примере выше, вы можете использовать функцию Excel ИНДИРЕКТ, чтобы поместить адрес одной ячейки в другую в виде обычной текстовой строки и получить значение первой ячейки по ссылке на вторую. Однако этот тривиальный пример - не более чем намек на возможности ИНДИРЕКТ.

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

    Создание косвенных ссылок из значений ячеек

    Как вы помните, функция Excel INDIRECT позволяет использовать стили ссылок A1 и R1C1. Обычно вы не можете использовать оба стиля одновременно на одном листе, вы можете только переключаться между двумя типами ссылок с помощью кнопки Файл> Параметры> Формулы > Флажок R1C1 Именно по этой причине пользователи Excel редко рассматривают использование R1C1 в качестве альтернативного подхода к ссылкам.

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

    Стиль A1 это обычный тип ссылки в Excel, который ссылается на столбец, за которым следует номер строки. Например, B2 ссылается на ячейку на пересечении столбца B и строки 2.

    стиль R1C1 Например, R4C1 относится к ячейке A4, которая находится в строке 4, столбце 1 на листе. Если после буквы нет цифры, значит, вы обращаетесь к той же строке или столбцу.

    А теперь давайте посмотрим, как функция INDIRECT обрабатывает ссылки A1 и R1C1:

    Как вы видите на скриншоте выше, три разные формулы Indirect возвращают один и тот же результат. Вы уже догадались, почему? Уверен, что догадались : )

    • Формула в ячейке D1: =INDIRECT(C1)

    Это самый простой вариант. Формула обращается к ячейке C1, извлекает ее значение - текстовую строку A2 преобразует его в ссылку на ячейку, переходит к ячейке A2 и возвращает ее значение, которое равно 222.

    • Формула в ячейке D3: =INDIRECT(C3,FALSE)

    FALSE во втором аргументе указывает на то, что ссылающееся значение (C3) должно рассматриваться как ссылка на ячейку R1C1, т.е. номер строки, за которым следует номер столбца. Поэтому наша формула INDIRECT интерпретирует значение в ячейке C3 (R2C1) как ссылку на ячейку на стыке строки 2 и столбца 1, т.е. ячейку A2.

    Создание косвенных ссылок из значений ячеек и текста

    Аналогично тому, как мы создавали ссылки из значений ячеек, вы можете объединить текстовая строка и ссылка на ячейку в вашей формуле INDIRECT, связанные вместе оператором конкатенации (&).

    В следующем примере формула: =INDIRECT("B"&C2) возвращает значение из ячейки B2 на основе следующей логической цепочки:

    Функция INDIRECT конкатенирует элементы аргумента ref_text - текст B и значение в ячейке C2 -> значением в ячейке C2 является число 2, которое делает ссылку на ячейку B2 -> формула переходит в ячейку B2 и возвращает ее значение, которое является числом 10.

    Использование функции INDIRECT с именованными диапазонами

    Помимо создания ссылок из значений ячеек и текста, вы можете использовать функцию Excel ИНДИРЕКТ для ссылок на названные диапазоны .

    Предположим, в вашем листе есть следующие именованные диапазоны:

    • Яблоки - B2:B6
    • Бананы - C2:C6
    • Лимоны - D2:D6

    Чтобы создать динамическую ссылку Excel на любой из вышеперечисленных диапазонов, просто введите его имя в некоторую ячейку, например, G1, и обратитесь к этой ячейке с помощью формулы косвенных ссылок =INDIRECT(G1) .

    А теперь можно сделать еще один шаг вперед и внедрить эту формулу INDIRECT в другие функции Excel, чтобы вычислить сумму и среднее значение значений в заданном именованном диапазоне или найти максимальное/минимальное значение в пределах диапазона:

    • =SUM(INDIRECT(G1))
    • = СРЕДНЕЕ(КОСВЕННОЕ(G1))
    • =MAX(INDIRECT(G1))
    • =MIN(INDIRECT(G1))

    Теперь, когда вы получили общее представление о том, как использовать функцию ИНДИРЕКТ в Excel, мы можем поэкспериментировать с более мощными формулами.

    Формула INDIRECT для динамической ссылки на другой рабочий лист

    Полезность функции Excel ИНДИРЕКТ не ограничивается построением "динамических" ссылок на ячейки. Вы также можете использовать ее для ссылок на ячейки в других рабочих листах "на лету", и вот как это сделать.

    Предположим, у вас есть некоторые важные данные на Листе 1, и вы хотите вытащить эти данные на Лист 2. Следующий снимок экрана демонстрирует, как формула Excel Indirect может справиться с этой задачей:

    Давайте разберем формулу, которую вы видите на скриншоте, и поймем.

    Как вы знаете, обычным способом ссылки на другой лист в Excel является запись имени листа, за которым следует восклицательный знак и ссылка на ячейку/диапазон, например SheetName!Range Поскольку имя листа часто содержит пробел (пробелы), лучше заключить его (имя, а не пробел : ) в одинарные кавычки, чтобы предотвратить ошибку, например 'Мой лист!' $A$1 .

    Теперь вам остается только ввести имя листа в одну ячейку, адрес ячейки в другую, объединить их в текстовую строку и передать эту строку функции INDIRECT. Помните, что в текстовой строке каждый элемент, кроме адреса ячейки или числа, нужно заключить в двойные кавычки и связать все элементы вместе с помощью оператора конкатенации (&).

    Учитывая вышесказанное, мы получаем следующую схему:

    INDIRECT("'" & Название листа & "'!" & Ячейка для получения данных )

    Возвращаясь к нашему примеру, вы помещаете имя листа в ячейку A1, а адреса ячеек вводите в столбец B, как показано на скриншоте выше. В результате вы получаете следующую формулу:

    INDIRECT("'" & $A$1 & "'!" & B1)

    Также обратите внимание, что если вы копируете формулу в несколько ячеек, вы должны зафиксировать ссылку на имя листа, используя абсолютные ссылки на ячейки, например $A$1.

    Примечания

    • Если одна из ячеек, содержащих имя второго листа и адрес ячейки (A1 и B1 в приведенной выше формуле) пуста, ваша формула Indirect вернет ошибку. Чтобы предотвратить это, вы можете обернуть функцию INDIRECT в функцию IF:

      IF(OR($A$1="",B1=""), "", INDIRECT("'" & $A$1 & "'!" & B1))

    • Чтобы формула INDIRECT, ссылающаяся на другой лист, работала правильно, ссылающийся лист должен быть открыт, иначе формула вернет ошибку #REF. Чтобы избежать ошибки, можно использовать функцию IFERROR, которая выведет пустую строку, какая бы ошибка ни возникла:

      IFERROR(INDIRECT("'" & $A$1 & "'!" &B1), "")

    Создание динамической ссылки Excel на другую рабочую книгу

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

    Чтобы было проще, давайте начнем с того, что сделаем ссылку на другую книгу обычным способом (апострофы добавляются в том случае, если в названиях вашей книги и/или листа есть пробелы):

    '[Имя_книги.xlsx]Имя_листа'!Диапазон

    Предполагая, что имя книги находится в ячейке A2, имя листа - в B2, а адрес ячейки - в C2, мы получим следующую формулу:

    =INDIRECT("'[" & $A$2 & "]" & $B$2 & "'!" & C2)

    Поскольку вы не хотите, чтобы ячейки с именами книги и листа изменялись при копировании формулы в другие ячейки, вы блокируете их, используя абсолютные ссылки на ячейки, $A$2 и $B$2, соответственно.

    И теперь вы можете легко написать собственную динамическую ссылку на другую рабочую книгу Excel, используя следующий шаблон:

    =INDIRECT("'[" & Название книги & "]" & Название листа & "'!" & Адрес ячейки )

    Примечание. Рабочая книга, на которую ссылается ваша формула, всегда должна быть открыта, иначе функция INDIRECT выдаст ошибку #REF. Как обычно, функция IFERROR поможет вам избежать этого:

    =IFERROR(INDIRECT("'[" & A2 & "]" & $A$1 & "'!" & B1), "")

    Использование функции Excel INDIRECT для блокировки ссылки на ячейку

    Обычно Microsoft Excel изменяет ссылки на ячейки, когда вы вставляете новые или удаляете существующие строки или столбцы на листе. Чтобы этого не произошло, вы можете использовать функцию INDIRECT для работы со ссылками на ячейки, которые должны оставаться нетронутыми в любом случае.

    Чтобы проиллюстрировать разницу, сделайте следующее:

    1. Введите любое значение в любую ячейку, например, число 20 в ячейку A1.
    2. Ссылайтесь на A1 из двух других ячеек разными способами: =A1 и =INDIRECT("A1")
    3. Вставьте новую строку над строкой 1.

    Видите, что происходит? Ячейка с равный логический оператор по-прежнему возвращает 20, потому что его формула была автоматически изменена на =A2. Ячейка с формулой INDIRECT теперь возвращает 0, потому что формула не была изменена при вставке нового ряда и по-прежнему ссылается на ячейку A1, которая в настоящее время пуста:

    После этой демонстрации у вас может сложиться впечатление, что функция INDIRECT скорее мешает, чем помогает. Хорошо, давайте попробуем сделать это другим способом.

    Предположим, вы хотите просуммировать значения в ячейках A2:A5, и вы можете легко сделать это с помощью функции SUM:

    =SUM(A2:A5)

    Однако вы хотите, чтобы формула оставалась неизменной, независимо от того, сколько строк удалено или вставлено. Самое очевидное решение - использование абсолютных ссылок - не поможет. Чтобы убедиться в этом, введите формулу =SUM($A$2:$A$5) в некоторой ячейке, вставьте новую строку, скажем, в строку 3, и... найдите формулу, преобразованную в =SUM($A$2:$A$6) .

    Конечно, в большинстве случаев такая любезность Microsoft Excel будет работать отлично. Тем не менее, могут быть ситуации, когда вы не хотите, чтобы формула изменялась автоматически. Решением является использование функции INDIRECT, как показано ниже:

    =SUM(INDIRECT("A2:A5"))

    Поскольку Excel воспринимает "A1:A5" как обычную текстовую строку, а не как ссылку на диапазон, он не будет вносить никаких изменений при вставке или удалении строки (строк).

    Использование INDIRECT с другими функциями Excel

    Помимо SUM, INDIRECT часто используется с другими функциями Excel, такими как ROW, COLUMN, ADDRESS, VLOOKUP, SUMIF и др.

    Пример 1. Функции INDIRECT и ROW

    Довольно часто функция ROW используется в Excel для возврата массива значений. Например, вы можете использовать следующую формулу массива (помните, что она требует нажатия Ctrl + Shift + Enter) для возврата среднего значения 3 наименьших чисел в диапазоне A1:A10:

    = СРЕДНЕЕ(SMALL(A1:A10,ROW(1:3)))

    Однако если вы вставите новую строку в рабочий лист, где-нибудь между строками 1 и 3, диапазон в функции ROW изменится на ROW(1:4), и формула вернет среднее значение 4 наименьших чисел вместо 3.

    Чтобы этого не произошло, вложите INDIRECT в функцию ROW, и формула вашего массива всегда будет оставаться корректной, независимо от того, сколько строк будет вставлено или удалено:

    = СРЕДНЕЕ(SMALL(A1:A10,ROW(INDIRECT("1:3"))))

    Вот еще пара примеров использования INDIRECT и ROW в сочетании с функцией LARGE: Как суммировать N наибольших чисел в диапазоне.

    Пример 2. Функции INDIRECT и ADDRESS

    Вы можете использовать Excel INDIRECT вместе с функцией ADDRESS, чтобы получить значение в определенной ячейке "на лету".

    Как вы помните, функция ADDRESS используется в Excel для получения адреса ячейки по номерам строки и столбца. Например, формула =ADDRESS(1,3) возвращает строку $C$1, поскольку C1 - это ячейка на пересечении 1-й строки и 3-го столбца.

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

    =INDIRECT(ADDRESS(1,3))

    Конечно, эта тривиальная формула лишь демонстрирует технику. А вот несколько примеров, которые могут оказаться действительно полезными:

    • Формула INDIRECT ADDRESS - как переключать строки и столбцы.
    • VLOOKUP и INDIRECT - как динамически извлекать данные из разных листов.
    • INDIRECT с INDEX / MATCH - как довести до совершенства формулу VLOOKUP с учетом регистра.
    • Excel INDIRECT и COUNTIF - как использовать функцию COUNTIF для несмежного диапазона или выбора ячеек.

    Использование INDIRECT с проверкой данных в Excel

    Вы можете использовать функцию Excel ИНДИРЕКТ с проверкой данных для создания каскадных выпадающих списков, которые отображают различные варианты в зависимости от того, какое значение пользователь выбрал в первом выпадающем списке.

    Простой зависимый выпадающий список сделать очень легко. Все, что нужно, это несколько именованных диапазонов для хранения элементов выпадающего списка и простой =INDIRECT(A2) формула, где A2 - ячейка, в которой отображается первый выпадающий список.

    Чтобы создать более сложные трехуровневые меню или выпадающие списки с многословными элементами, вам понадобится более сложная формула INDIRECT с вложенной функцией SUBSTITUTE.

    Подробное пошаговое руководство по использованию INDIRECT в Excel Data Validation можно найти в этом руководстве: Как сделать зависимый выпадающий список в Excel.

    Функция Excel ИНДИРЕКТ - возможные ошибки и проблемы

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

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

    Ошибка Excel INDIRECT #REF!

    Чаще всего функция INDIRECT возвращает ошибку #REF! в трех случаях:

    1. ref_text не является действительной ссылкой на ячейку Если параметр ref_text в вашей формуле Indirect не является действительной ссылкой на ячейку, формула выдаст значение ошибки #REF! Чтобы избежать возможных проблем, проверьте аргументы функции INDIRECT.
    2. Превышен предел диапазона Если аргумент ref_text вашей формулы Indirect ссылается на диапазон ячеек, превышающий ограничение по строкам 1 048 576 или по столбцам 16 384, вы также получите ошибку #REF в Excel 2007, 2010 и Excel 2013. Более ранние версии Excel игнорируют превышение лимита и возвращают некоторое значение, хотя часто не то, которое вы ожидаете.
    3. Указанный лист или рабочая книга закрыты. Если ваша формула Indirect ссылается на другую рабочую книгу или лист Excel, эта другая рабочая книга / лист должны быть открыты, иначе INDIRECT вернет ошибку #REF!

    Ошибка Excel INDIRECT #NAME?

    Это самый очевидный случай, подразумевающий, что в имени функции есть какая-то ошибка, что приводит нас к следующему пункту : )

    Использование функции INDIRECT в неанглийских локалях

    Возможно, вам будет интересно узнать, что английское название функции INDIRECT переведено на 14 языков, в том числе:

    • Датский язык - INDIREKTE
    • Финский язык - EPÄSUORA
    • Немецкий язык - INDIREKT
    • Венгерский - INDIREKT
    • Итальянский - INDIRETTO
    • Норвежский - INDIREKTE
    • Польский - ADR.POŚR
    • Испанский язык - INDIRECTO
    • Шведский - INDIREKT
    • Турецкий - DOLAYLI

    Если вам интересно получить полный список, пожалуйста, загляните на эту страницу.

    Частой проблемой неанглоязычных локализаций является не название функции INDIRECT, а различные Региональные настройки для Разделитель списков В стандартной конфигурации Windows для Северной Америки и некоторых других стран, по умолчанию Разделитель списков это запятая. В то время как в европейских странах запятая зарезервирована как Десятичный символ и Разделитель списков устанавливается точка с запятой.

    В результате при копировании формулы между двумя различными локалями Excel вы можете получить сообщение об ошибке " Мы обнаружили проблему с этой формулой... ", потому что Разделитель списков Если вы столкнулись с этой ошибкой при копировании формулы INDIRECT из этого учебника в Excel, просто замените все запятые (,) на точки с запятой (;), чтобы исправить ошибку.

    Чтобы проверить, какие разделитель списков и десятичный символ установлены на вашей машине, откройте программу Панель управления , и перейдите к Регион и язык> Дополнительные настройки .

    Надеюсь, это руководство пролило свет на использование функции INDIRECT в Excel. Теперь, когда вы знаете ее сильные и слабые стороны, самое время попробовать и посмотреть, как функция INDIRECT может упростить ваши задачи в Excel. Спасибо за чтение!

    Майкл Браун — увлеченный технологический энтузиаст, стремящийся упростить сложные процессы с помощью программных инструментов. Имея более чем десятилетний опыт работы в технологической отрасли, он отточил свои навыки в Microsoft Excel и Outlook, а также в Google Sheets и Docs. Блог Майкла посвящен тому, чтобы делиться своими знаниями и опытом с другими, предоставляя простые советы и учебные пособия для повышения производительности и эффективности. Являетесь ли вы опытным профессионалом или новичком, в блоге Майкла вы найдете ценную информацию и практические советы, которые помогут вам максимально эффективно использовать эти важные программные инструменты.