На первый взгляд (особенно при чтении справки) функция ДВССЫЛ (INDIRECT) выглядит простой и даже ненужной. Ее суть в том, чтобы превращать текст похожий на ссылку — в полноценную ссылку. Т.е. если нам нужно сослаться на ячейку А1, то мы можем либо привычно сделать прямую ссылку (ввести знак равно в D1, щелкнуть мышью по А1 и нажать Enter), а можем использовать ДВССЫЛ для той же цели:
Обратите внимание, что аргумент функции — ссылка на А1 — введен в кавычках, поэтому что, по сути, является здесь текстом.
«Ну ОК», — скажете вы. «И что тут полезного?».
Но не судите по первому впечатлению — оно обманчиво. Эта функция может выручить вас в большом количестве ситуаций.
Пример 1. Транспонирование
Классика жанра: нужно превратить вертикальный диа
пазон в горизонтальный (транспонировать). Само-собой, можно использовать специальную вставку или функцию ТРАНСП (TRANSPOSE) в формуле массива, но можно обойтись и нашей ДВССЫЛ:
Логика проста: чтобы получить адрес очередной ячейки, мы склеиваем спецсимволом «&» букву «А» и номер столбца текущей ячейки, который выдает нам функция СТОЛБЕЦ (COLUMN).
Обратную процедуру лучше проделать немного по-другому. Поскольку на этот раз нам нужно формировать ссылку на ячейки B2, C2, D2 и т.д., то удобнее использовать режим ссылок R1C1 вместо классического «морского боя». В этом режиме наши ячейки будут отличаться только номером столбца: B2=R1C2, C2=R1C3, D2=R1C4 и т.д.
Тут на помощь приходит второй необязательный аргумент функции ДВССЫЛ. Если он равен ЛОЖЬ (FALSE), то можно задавать адрес ссылки в режиме R1C1. Таким образом, мы можем легко транспонировать горизонтальный диапазон обратно в вертикальный:
Пример 2. Суммирование по интервалу
Мы уже разбирали один способ суммирования по окну (диапазону) заданного размера на листе с помощью функции СМЕЩ (OFFSET). Подобную задачу можно решить и с помощью ДВССЫЛ. Если нам нужно суммировать данные только из определенного диапазона-периода, то можно склеить его из кусочков и превратить затем в полноценную ссылку, которую и вставить внутрь функции СУММ (SUM):
Пример 3. Выпадающий список по умной таблице
Иногда Microsoft Excel не воспринимает имена и столбцы умных таблиц как полноценные ссылки. Так, например, при попытке создать выпадающий список (вкладка Данные — Проверка данных) на основе столбца Сотрудники из умной таблицы Люди мы получим ошибку:
Если же «обернуть» ссылку нашей функцией ДВССЫЛ, то Excel преспокойно ее примет и наш выпадающий список будет динамически обновляться при дописывании новых сотрудников в конец умной таблицы:
Пример 4. Несбиваемые ссылки
Как известно, Excel автоматически корректирует адреса ссылок в формулах при вставке или удалении строк-столбцов на лист. В большинстве случаев это правильно и удобно, но не всегда. Допустим, что нам нужно перенести имена из справочника по сотрудникам в отчет:
Если ставить обычные ссылки (в первую зеленую ячейку ввести =B2 и скопировать вниз), то потом при удалении, например, Даши мы получим в соответствующей ей зеленой ячейке ошибку #ССЫЛКА! (#REF!). В случае применения для создания ссылок функции ДВССЫЛ такой проблемы не будет.
Пример 5. Сбор данных с нескольких листов
Предположим, что у нас есть 5 листов с однотипными отчетами от разных сотрудников (Михаил, Елена, Иван, Сергей, Дмитрий):
Допустим, что форма, размеры, положение и последовательность товаров и месяцев во всех таблицах одинаковые — различаются только числа.
Собрать данные со всех листов (не просуммировать, а положить друг под друга «стопочкой») можно всего одной формулой:
Как видите, идея та же: мы склеиваем ссылку на нужную ячейку заданного листа, а ДВССЫЛ превращает ее в «живую». Для удобства, над таблицей я добавил буквы столбцов (B,C,D), а справа — номера строк, которые нужно взять с каждого листа.
Подводные камни
При использовании ДВССЫЛ (INDIRECT) нужно помнить про ее слабые места:
- Если вы делаете ссылку в другой файл (склеивая имя файла в квадратных скобках, имя листа и адрес ячейки), то она работает только пока исходный файл открыт. Если его закрыть, то получим ошибку #ССЫЛКА!
- С помощью ДВССЫЛ нельзя сделать ссылку на динамический именованный диапазон. На статический — без проблем.
- ДВССЫЛ является волатильной (volatile) или «летучей» функцией, т.е. она пересчитывается при любом изменении любой ячейки листа, а не только влияющих ячеек, как у обычных функций. Это плохо отражается на быстродействии и на больших таблицах ДВССЫЛ лучше не увлекаться.
Ссылки по теме
- Как создать динамический диапазон с автоподстройкой размеров
- Суммирование по диапазону-окну на листе функцией СМЕЩ (OFFSET)
Функция INDIRECT (ДВССЫЛ) в Excel используется когда у вас есть ссылки в виде текста, и вы хотите получить значения из этих ссылок.
Содержание
- Что возвращает функция
- Синтаксис
- Аргументы функции
- Дополнительная информация
- Примеры использования функции ДВССЫЛ в Excel
- Пример 1. Используем ссылку на ячейку для получения значения
- Пример 2. Получаем данные по ссылке на ячейку
- Пример 3. Используем комбинацию текстового и числового значений в функции INDIRECT (ДВССЫЛ)
- Пример 4. Ссылаемся на диапазон ячеек с помощью функции INDIRECT (ДВССЫЛ)
- Пример 5. Ссылаемся на именованный диапазон значений с использованием функции INDIRECT (ДВССЫЛ)
- Пример 6. Создаем зависимый выпадающий список с помощью INDIRECT (ДВССЫЛ)
Что возвращает функция
Функция возвращает ссылку, заданную текстовой строкой.
Синтаксис
=INDIRECT(ref_text, [a1]) — английская версия
=ДВССЫЛ(ссылка_на_текст;[a1]) — русская версия
Аргументы функции
- ref_text (ссылка_на_текст) — текстовая строка, которая содержит в себе ссылку на ячейку или именованный диапазон;
- [a1] — логическое значение, которое определяет тип ссылки используемой в аргументе ref_text (ссылка_на_текст). Значения аргумента могут быть TRUE (ссылка указана в формате «А1») или FALSE (ссылка указана в формате «R1C1»). Если не указать этот аргумент, то Excel автоматически определит его значение как TRUE.
Дополнительная информация
- Функция INDIRECT (ДВССЫЛ) это волатильная функция (используйте с осторожностью);
- Она пересчитывает значения каждый раз, когда вы открываете Excel файл, и каждый раз когда вычисление запускается на рабочем листе Excel;
- Так как волатильные функции постоянно обновляются и производят вычисления, это, в свою очередь, замедляет работу вашего Excel файла.
- Аргумент текстовой ссылки может выглядеть как:
— ссылка на ячейку, которая содержит ссылку на ячейку в формате «A1» или «R1C1».
— ссылка на ячейку в двойных кавычках.
— именованный диапазон, возвращающий ссылку
Примеры использования функции ДВССЫЛ в Excel
Пример 1. Используем ссылку на ячейку для получения значения
Функция ДВССЫЛ получает ссылку на ячейку как исходные данные и возвращает значение ячейки по этой ссылке (как показано в примере ниже):
Формула в ячейке С1:
=INDIRECT(“A1”) — английская версия
=ДВССЫЛ(«A1») — русская версия
Функция получает ссылку на ячейку (в двойных кавычках) и возвращает значение этой ячейки, которая равна “123”.
Вы можете спросить — почему бы нам просто не использовать «=A1» вместо использования функции INDIRECT (ДВССЫЛ)?
И вот почему…
Если в данном случае вы введете в ячейку С1 формулу “=A1” или “=$A$1”, то она выдаст вам тот же результат, что находится в ячейке А1. Но если вы вставите в таблице строку выше, вы можете заметить, что ссылка на ячейку будет автоматически изменена.
Функция очень полезна, если вы хотите заблокировать ссылку на ячейку таким образом, чтобы она не изменялась при вставке строк / столбцов в рабочий лист.
Пример 2. Получаем данные по ссылке на ячейку
Также, с помощью функции вы можете извлечь значения из ячейки, ссылка на которую хранится в самой ячейке.
На примере выше, ячейка «А1» содержит в себе число “123”.
Ячейка «С1» ссылается на ячейку «А1».
Теперь, используя с помощью функции вы можете указать ячейку С1 как аргумент функции, который выведет по итогу значение ячейки А1.
Важно. Вам не нужно использовать кавычки в ячейке С1, значение ссылки на ячейку должно быть указано в текстовом формате.
Пример 3. Используем комбинацию текстового и числового значений в функции INDIRECT (ДВССЫЛ)
Вы можете создать ссылку на ячейку используя комбинацию текстовых и числовых значений.
Например, если в ячейке С1 указано число “2”, то используя формулу =INDIRECT(“A”&C1) или =ДВССЫЛ(«A»&C1) вы получите ссылку на значение ячейки «А2».
Практическое применение этого способа актуально, когда вы хотите динамически ссылаться на ячейки на основе значения в какой-либо другой ячейке.
Больше лайфхаков в нашем Telegram Подписаться
Пример 4. Ссылаемся на диапазон ячеек с помощью функции INDIRECT (ДВССЫЛ)
С помощью функции вы можете ссылаться на диапазон ячеек.
Например, =INDIRECT(“A1:A5”) или =ДВССЫЛ(«A1:A5») будет ссылаться на данные из диапазона ячеек «A1:A5».
Используя функцию SUM (СУММ) и INDIRECT (ДВССЫЛ) вместе, вы можете рассчитать сумму, а также максимальные и минимальные значения диапазона.
Пример 5. Ссылаемся на именованный диапазон значений с использованием функции INDIRECT (ДВССЫЛ)
Если вы создали именованный диапазон в Excel, вы можете обратиться к нему с помощью функции INDIRECT (ДВССЫЛ).
Например, представим что у вас есть оценки по 5 студентам по трем предметам как показано ниже:
Зададим для следующих ячеек названия:
- B2:B6: Математика
- C2:C6: Физика
- D2:D6: Химия
Для того чтобы задать название любому диапазону значений, достаточно выбрать ячейки и присвоить им название в соответствующем боксе:
После этого вы можете обратиться к указанным диапазонам с помощью формулы:
=INDIRECT(“Именованный диапазон”) — английская версия
=ДВССЫЛ(“Именованный диапазон”) — русская версия
Например, если вы хотите узнать средний балл среди студентов по математике — используйте следующую формулу:
=AVERAGE(INDIRECT(“Математика”)) — английская версия
=СРЗНАЧ(ДВССЫЛ(«Математика»)) — русская версия
Если имя диапазона указано в ячейке («F2» в приведенном ниже примере указан как “Матем”), вы можете использовать ссылку на ячейку прямо в формуле. В следующем примере показано, как вычислять среднее значение с использованием именных диапазонов.
Пример 6. Создаем зависимый выпадающий список с помощью INDIRECT (ДВССЫЛ)
C помощью этой функции вы можете создавать зависимый выпадающий список.
Например, предположим, что у вас есть две колонки с названиями «Россия» и «США», в строках указаны города этих стран, как указано на примере ниже:
Для того, чтобы создать зависимый выпадающий список вам нужно создать два именованных диапазона для ячеек «A2:A5» с именем “Россия” и для ячеек «B2:B5» с названием “США”.
Теперь, в ячейке «D2» создайте выпадающий список для «России» и «США». Так мы создадим первый выпадающий список, в котором пользователь сможет выбрать одну из двух стран.
Теперь, для создания зависимого выпадающего списка:
- Выделите ячейку E2 (или любую другую ячейку, в которой вы хотите сделать зависимый выпадающий список);
- Кликните по вкладке “Data” -> “Data Validation”;
- На вкладке “Настройки” в разделе “Allow” выберите List;
- В разделе “Source” укажите ссылку: =INDIRECT($D$2) или =ДВССЫЛ($D$2);
- Нажмите ОК
Теперь, если вы выберите в первом выпадающем списке, например, страну «Россия», то во втором выпадающем списке появятся только те города, которые относятся к этой стране. Такая же ситуация, если вы выберите страну «США» из первого выпадающего списка.
Excel for Microsoft 365 Excel for Microsoft 365 for Mac Excel for the web Excel 2021 Excel 2021 for Mac Excel 2019 Excel 2019 for Mac Excel 2016 Excel 2016 for Mac Excel 2013 Excel 2010 Excel 2007 Excel for Mac 2011 Excel Starter 2010 More…Less
This article describes the formula syntax and usage of the INDIRECT function in Microsoft Excel.
Description
Returns the reference specified by a text string. References are immediately evaluated to display their contents. Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.
Syntax
INDIRECT(ref_text, [a1])
The INDIRECT function syntax has the following arguments:
-
Ref_text Required. A reference to a cell that contains an A1-style reference, an R1C1-style reference, a name defined as a reference, or a reference to a cell as a text string. If ref_text is not a valid cell reference, INDIRECT returns the #REF! error value.
-
If ref_text refers to another workbook (an external reference), the other workbook must be open. If the source workbook is not open, INDIRECT returns the #REF! error value.
Note External references are not supported in Excel Web App.
-
If ref_text refers to a cell range outside the row limit of 1,048,576 or the column limit of 16,384 (XFD), INDIRECT returns a #REF! error.
Note This behavior is different from Excel versions earlier than Microsoft Office Excel 2007, which ignore the exceeded limit and return a value.
-
-
A1 Optional. A logical value that specifies what type of reference is contained in the cell ref_text.
-
If a1 is TRUE or omitted, ref_text is interpreted as an A1-style reference.
-
If a1 is FALSE, ref_text is interpreted as an R1C1-style reference.
-
Example
Copy the example data in the following table, and paste it in cell A1 of a new Excel worksheet. For formulas to show results, select them, press F2, and then press Enter. If you need to, you can adjust the column widths to see all the data.
Data |
||
B2 |
1.333 |
|
B3 |
45 |
|
George |
10 |
|
5 |
62 |
|
Formula |
Description |
Result |
‘=INDIRECT(A2) |
Value of the reference in cell A2. The reference is to cell B2, which contains the value 1.333. |
1.333 |
‘=INDIRECT(A3) |
Value of the reference in cell A3. The reference is to cell B3, which contains the value 45. |
45 |
‘=INDIRECT(A4) |
Because cell B4 has the defined name «George,» the reference to that defined name is to cell B4, which contains the value 10. |
10 |
‘=INDIRECT(«B»&A5) |
Combines «B» with the value in A5, which is 5. This, in turn, refers to cell B5, which contains the value 62. |
62 |
Need more help?
Want more options?
Explore subscription benefits, browse training courses, learn how to secure your device, and more.
Communities help you ask and answer questions, give feedback, and hear from experts with rich knowledge.
Содержание
- INDIRECT function
- Description
- Syntax
- Example
- INDIRECT function
- Description
- Syntax
- Example
- Разбор функции ДВССЫЛ (INDIRECT) на примерах
- Пример 1. Транспонирование
- Пример 2. Суммирование по интервалу
- Пример 3. Выпадающий список по умной таблице
- Пример 4. Несбиваемые ссылки
- Пример 5. Сбор данных с нескольких листов
- Подводные камни
- Разбор функции ДВССЫЛ (INDIRECT) на примерах
- Пример 1. Транспонирование
- Пример 2. Суммирование по интервалу
- Пример 3. Выпадающий список по умной таблице
- Пример 4. Несбиваемые ссылки
- Пример 5. Сбор данных с нескольких листов
- Подводные камни
INDIRECT function
This article describes the formula syntax and usage of the INDIRECT function in Microsoft Excel.
Description
Returns the reference specified by a text string. References are immediately evaluated to display their contents. Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.
Syntax
The INDIRECT function syntax has the following arguments:
Ref_text Required. A reference to a cell that contains an A1-style reference, an R1C1-style reference, a name defined as a reference, or a reference to a cell as a text string. If ref_text is not a valid cell reference, INDIRECT returns the #REF! error value.
If ref_text refers to another workbook (an external reference), the other workbook must be open. If the source workbook is not open, INDIRECT returns the #REF! error value.
Note External references are not supported in Excel Web App.
If ref_text refers to a cell range outside the row limit of 1,048,576 or the column limit of 16,384 (XFD), INDIRECT returns a #REF! error.
Note This behavior is different from Excel versions earlier than Microsoft Office Excel 2007, which ignore the exceeded limit and return a value.
A1 Optional. A logical value that specifies what type of reference is contained in the cell ref_text.
If a1 is TRUE or omitted, ref_text is interpreted as an A1-style reference.
If a1 is FALSE, ref_text is interpreted as an R1C1-style reference.
Example
Copy the example data in the following table, and paste it in cell A1 of a new Excel worksheet. For formulas to show results, select them, press F2, and then press Enter. If you need to, you can adjust the column widths to see all the data.
Источник
INDIRECT function
This article describes the formula syntax and usage of the INDIRECT function in Microsoft Excel.
Description
Returns the reference specified by a text string. References are immediately evaluated to display their contents. Use INDIRECT when you want to change the reference to a cell within a formula without changing the formula itself.
Syntax
The INDIRECT function syntax has the following arguments:
Ref_text Required. A reference to a cell that contains an A1-style reference, an R1C1-style reference, a name defined as a reference, or a reference to a cell as a text string. If ref_text is not a valid cell reference, INDIRECT returns the #REF! error value.
If ref_text refers to another workbook (an external reference), the other workbook must be open. If the source workbook is not open, INDIRECT returns the #REF! error value.
Note External references are not supported in Excel Web App.
If ref_text refers to a cell range outside the row limit of 1,048,576 or the column limit of 16,384 (XFD), INDIRECT returns a #REF! error.
Note This behavior is different from Excel versions earlier than Microsoft Office Excel 2007, which ignore the exceeded limit and return a value.
A1 Optional. A logical value that specifies what type of reference is contained in the cell ref_text.
If a1 is TRUE or omitted, ref_text is interpreted as an A1-style reference.
If a1 is FALSE, ref_text is interpreted as an R1C1-style reference.
Example
Copy the example data in the following table, and paste it in cell A1 of a new Excel worksheet. For formulas to show results, select them, press F2, and then press Enter. If you need to, you can adjust the column widths to see all the data.
Источник
Разбор функции ДВССЫЛ (INDIRECT) на примерах
На первый взгляд (особенно при чтении справки) функция ДВССЫЛ (INDIRECT) выглядит простой и даже ненужной. Ее суть в том, чтобы превращать текст похожий на ссылку — в полноценную ссылку. Т.е. если нам нужно сослаться на ячейку А1, то мы можем либо привычно сделать прямую ссылку (ввести знак равно в D1, щелкнуть мышью по А1 и нажать Enter), а можем использовать ДВССЫЛ для той же цели:
Обратите внимание, что аргумент функции — ссылка на А1 — введен в кавычках, поэтому что, по сути, является здесь текстом.
«Ну ОК», — скажете вы. «И что тут полезного?».
Но не судите по первому впечатлению — оно обманчиво. Эта функция может выручить вас в большом количестве ситуаций.
Пример 1. Транспонирование
пазон в горизонтальный (транспонировать). Само-собой, можно использовать специальную вставку или функцию ТРАНСП (TRANSPOSE) в формуле массива, но можно обойтись и нашей ДВССЫЛ:
Логика проста: чтобы получить адрес очередной ячейки, мы склеиваем спецсимволом «&» букву «А» и номер столбца текущей ячейки, который выдает нам функция СТОЛБЕЦ (COLUMN) .
Обратную процедуру лучше проделать немного по-другому. Поскольку на этот раз нам нужно формировать ссылку на ячейки B2, C2, D2 и т.д., то удобнее использовать режим ссылок R1C1 вместо классического «морского боя». В этом режиме наши ячейки будут отличаться только номером столбца: B2=R1C 2 , C2=R1C 3 , D2=R1C 4 и т.д.
Тут на помощь приходит второй необязательный аргумент функции ДВССЫЛ. Если он равен ЛОЖЬ (FALSE) , то можно задавать адрес ссылки в режиме R1C1. Таким образом, мы можем легко транспонировать горизонтальный диапазон обратно в вертикальный:
Пример 2. Суммирование по интервалу
Мы уже разбирали один способ суммирования по окну (диапазону) заданного размера на листе с помощью функции СМЕЩ (OFFSET) . Подобную задачу можно решить и с помощью ДВССЫЛ. Если нам нужно суммировать данные только из определенного диапазона-периода, то можно склеить его из кусочков и превратить затем в полноценную ссылку, которую и вставить внутрь функции СУММ (SUM) :
Пример 3. Выпадающий список по умной таблице
Иногда Microsoft Excel не воспринимает имена и столбцы умных таблиц как полноценные ссылки. Так, например, при попытке создать выпадающий список (вкладка Данные — Проверка данных) на основе столбца Сотрудники из умной таблицы Люди мы получим ошибку:
Если же «обернуть» ссылку нашей функцией ДВССЫЛ, то Excel преспокойно ее примет и наш выпадающий список будет динамически обновляться при дописывании новых сотрудников в конец умной таблицы:
Пример 4. Несбиваемые ссылки
Как известно, Excel автоматически корректирует адреса ссылок в формулах при вставке или удалении строк-столбцов на лист. В большинстве случаев это правильно и удобно, но не всегда. Допустим, что нам нужно перенести имена из справочника по сотрудникам в отчет:
Если ставить обычные ссылки (в первую зеленую ячейку ввести =B2 и скопировать вниз), то потом при удалении, например, Даши мы получим в соответствующей ей зеленой ячейке ошибку #ССЫЛКА! (#REF!). В случае применения для создания ссылок функции ДВССЫЛ такой проблемы не будет.
Пример 5. Сбор данных с нескольких листов
Предположим, что у нас есть 5 листов с однотипными отчетами от разных сотрудников (Михаил, Елена, Иван, Сергей, Дмитрий):
Допустим, что форма, размеры, положение и последовательность товаров и месяцев во всех таблицах одинаковые — различаются только числа.
Собрать данные со всех листов (не просуммировать, а положить друг под друга «стопочкой») можно всего одной формулой:
Как видите, идея та же: мы склеиваем ссылку на нужную ячейку заданного листа, а ДВССЫЛ превращает ее в «живую». Для удобства, над таблицей я добавил буквы столбцов (B,C,D), а справа — номера строк, которые нужно взять с каждого листа.
Подводные камни
При использовании ДВССЫЛ (INDIRECT) нужно помнить про ее слабые места:
- Если вы делаете ссылку в другой файл (склеивая имя файла в квадратных скобках, имя листа и адрес ячейки), то она работает только пока исходный файл открыт. Если его закрыть, то получим ошибку #ССЫЛКА!
- С помощью ДВССЫЛ нельзя сделать ссылку на динамический именованный диапазон. На статический — без проблем.
- ДВССЫЛ является волатильной (volatile) или «летучей» функцией, т.е. она пересчитывается при любом изменении любой ячейки листа, а не только влияющих ячеек, как у обычных функций. Это плохо отражается на быстродействии и на больших таблицах ДВССЫЛ лучше не увлекаться.
Источник
Разбор функции ДВССЫЛ (INDIRECT) на примерах
На первый взгляд (особенно при чтении справки) функция ДВССЫЛ (INDIRECT) выглядит простой и даже ненужной. Ее суть в том, чтобы превращать текст похожий на ссылку — в полноценную ссылку. Т.е. если нам нужно сослаться на ячейку А1, то мы можем либо привычно сделать прямую ссылку (ввести знак равно в D1, щелкнуть мышью по А1 и нажать Enter), а можем использовать ДВССЫЛ для той же цели:
Обратите внимание, что аргумент функции — ссылка на А1 — введен в кавычках, поэтому что, по сути, является здесь текстом.
«Ну ОК», — скажете вы. «И что тут полезного?».
Но не судите по первому впечатлению — оно обманчиво. Эта функция может выручить вас в большом количестве ситуаций.
Пример 1. Транспонирование
пазон в горизонтальный (транспонировать). Само-собой, можно использовать специальную вставку или функцию ТРАНСП (TRANSPOSE) в формуле массива, но можно обойтись и нашей ДВССЫЛ:
Логика проста: чтобы получить адрес очередной ячейки, мы склеиваем спецсимволом «&» букву «А» и номер столбца текущей ячейки, который выдает нам функция СТОЛБЕЦ (COLUMN) .
Обратную процедуру лучше проделать немного по-другому. Поскольку на этот раз нам нужно формировать ссылку на ячейки B2, C2, D2 и т.д., то удобнее использовать режим ссылок R1C1 вместо классического «морского боя». В этом режиме наши ячейки будут отличаться только номером столбца: B2=R1C 2 , C2=R1C 3 , D2=R1C 4 и т.д.
Тут на помощь приходит второй необязательный аргумент функции ДВССЫЛ. Если он равен ЛОЖЬ (FALSE) , то можно задавать адрес ссылки в режиме R1C1. Таким образом, мы можем легко транспонировать горизонтальный диапазон обратно в вертикальный:
Пример 2. Суммирование по интервалу
Мы уже разбирали один способ суммирования по окну (диапазону) заданного размера на листе с помощью функции СМЕЩ (OFFSET) . Подобную задачу можно решить и с помощью ДВССЫЛ. Если нам нужно суммировать данные только из определенного диапазона-периода, то можно склеить его из кусочков и превратить затем в полноценную ссылку, которую и вставить внутрь функции СУММ (SUM) :
Пример 3. Выпадающий список по умной таблице
Иногда Microsoft Excel не воспринимает имена и столбцы умных таблиц как полноценные ссылки. Так, например, при попытке создать выпадающий список (вкладка Данные — Проверка данных) на основе столбца Сотрудники из умной таблицы Люди мы получим ошибку:
Если же «обернуть» ссылку нашей функцией ДВССЫЛ, то Excel преспокойно ее примет и наш выпадающий список будет динамически обновляться при дописывании новых сотрудников в конец умной таблицы:
Пример 4. Несбиваемые ссылки
Как известно, Excel автоматически корректирует адреса ссылок в формулах при вставке или удалении строк-столбцов на лист. В большинстве случаев это правильно и удобно, но не всегда. Допустим, что нам нужно перенести имена из справочника по сотрудникам в отчет:
Если ставить обычные ссылки (в первую зеленую ячейку ввести =B2 и скопировать вниз), то потом при удалении, например, Даши мы получим в соответствующей ей зеленой ячейке ошибку #ССЫЛКА! (#REF!). В случае применения для создания ссылок функции ДВССЫЛ такой проблемы не будет.
Пример 5. Сбор данных с нескольких листов
Предположим, что у нас есть 5 листов с однотипными отчетами от разных сотрудников (Михаил, Елена, Иван, Сергей, Дмитрий):
Допустим, что форма, размеры, положение и последовательность товаров и месяцев во всех таблицах одинаковые — различаются только числа.
Собрать данные со всех листов (не просуммировать, а положить друг под друга «стопочкой») можно всего одной формулой:
Как видите, идея та же: мы склеиваем ссылку на нужную ячейку заданного листа, а ДВССЫЛ превращает ее в «живую». Для удобства, над таблицей я добавил буквы столбцов (B,C,D), а справа — номера строк, которые нужно взять с каждого листа.
Подводные камни
При использовании ДВССЫЛ (INDIRECT) нужно помнить про ее слабые места:
- Если вы делаете ссылку в другой файл (склеивая имя файла в квадратных скобках, имя листа и адрес ячейки), то она работает только пока исходный файл открыт. Если его закрыть, то получим ошибку #ССЫЛКА!
- С помощью ДВССЫЛ нельзя сделать ссылку на динамический именованный диапазон. На статический — без проблем.
- ДВССЫЛ является волатильной (volatile) или «летучей» функцией, т.е. она пересчитывается при любом изменении любой ячейки листа, а не только влияющих ячеек, как у обычных функций. Это плохо отражается на быстродействии и на больших таблицах ДВССЫЛ лучше не увлекаться.
Источник
Содержание
- Для кого создано приложение Excel?
- Транспонирование
- Суммирование по интервалу
- Выпадающий список по умной таблице
- Как включить или отключить стиль ссылок R1C1 в Excel?
- Особенности и отличия стилей адресации A1 и R1C1
- Где это может быть полезно
- Ошибки в формуле Excel отображаемые в ячейках
- Как убрать #ДЕЛ/0 в Excel
- Результат ошибочного вычисления – #ЧИСЛО!
- Как убрать НД в Excel
- Присваивание объекта переменной
- Активный объект
- Смена активного объекта
- Свойства объектов
- Синтаксис
- Аргументы функции
- Создаем не сдвигающуюся начальную ссылку
- Создаем ссылку на статичный именованный диапазон
- Создаём ссылку используя информацию о листе, строке и столбце
Так и называется Microsoft Excel с данными, которые таблице-источнике, автоматически формируются на листе, что позволяет возможные области применения использует только определеннаяЕсли книга “Ведомость” манипуляции, а потом к сожалению не на клавиатуре несколько – инструмент «Таблица» в программе Excel.Если нужно сохранить ширину вы уже будете «Анализ «что если»», «Условное форматирование». После
Одной из самых популярных вы хотите визуально данные и вАвтор: Антон Андронов создавать наглядные интерактивные приложения Microsoft Office группа людей для открывается вручную, можно снова используется книга дружу( символов и нажать (или нажмите комбинацию Нам придется расширять столбца, но увеличить понимать, что лучшего которая располагается в этого, нужно выбрать функций, которые используются отобразить.
Транспонирование
Классика жанра: нужно превратить вертикальный диа
пазон в горизонтальный (транспонировать). Само-собой, можно использовать специальную вставку или функцию ТРАНСП (TRANSPOSE) в формуле массива, но можно обойтись и нашей ДВССЫЛ:
Логика проста: чтобы получить адрес очередной ячейки, мы склеиваем спецсимволом “&” букву “А” и номер столбца текущей ячейки, который выдает нам функция СТОЛБЕЦ (COLUMN).
Обратную процедуру лучше проделать немного по-другому. Поскольку на этот раз нам нужно формировать ссылку на ячейки B2, C2, D2 и т.д., то удобнее использовать режим ссылок R1C1 вместо классического “морского боя”. В этом режиме наши ячейки будут отличаться только номером столбца: B2=R1C2, C2=R1C3, D2=R1C4 и т.д.
Тут на помощь приходит второй необязательный аргумент функции ДВССЫЛ. Если он равен ЛОЖЬ (FALSE), то можно задавать адрес ссылки в режиме R1C1. Таким образом, мы можем легко транспонировать горизонтальный диапазон обратно в вертикальный:
Суммирование по интервалу
Мы уже разбирали один способ суммирования по окну (диапазону) заданного размера на листе с помощью функции СМЕЩ (OFFSET). Подобную задачу можно решить и с помощью ДВССЫЛ. Если нам нужно суммировать данные только из определенного диапазона-периода, то можно склеить его из кусочков и превратить затем в полноценную ссылку, которую и вставить внутрь функции СУММ (SUM):
Выпадающий список по умной таблице
Иногда Microsoft Excel не воспринимает имена и столбцы умных таблиц как полноценные ссылки. Так, например, при попытке создать выпадающий список (вкладка Данные – Проверка данных) на основе столбца Сотрудники из умной таблицы Люди мы получим ошибку:
Если же “обернуть” ссылку нашей функцией ДВССЫЛ, то Excel преспокойно ее примет и наш выпадающий список будет динамически обновляться при дописывании новых сотрудников в конец умной таблицы:
Как включить или отключить стиль ссылок R1C1 в Excel?
Как уже говорилось выше, по умолчанию в Excel используется стиль ссылок A1, поэтому чтобы начать работать с R1C1 сначала надо его включить. Для этого заходим в Файл -> Параметры и во вкладке Формулы и в блоке Работа с формулами ставим галочку напротив поля Стиль ссылок R1C1:
Соответственно, если нужно вернуться к стандартному варианту адресации вида A1, то стиль R1C1 можно отключить убрав соответствующую галочку в настройках.
Особенности и отличия стилей адресации A1 и R1C1
В первую очередь, при работе с ячейками обратите внимание, что для стиля R1C1 в адресе сначала идет строка, а потом столбец, а для A1 все наоборот — сначала столбец, а потом строка.
Например, ячейка $H$4 будет записана как R4C8 (а не как R8C4), поэтому будьте внимательнее при ручном вводе формул.
Еще одно отличие между A1 и R1C1 — внешний вид окна программы Excel, в котором по-разному обозначаются столбцы на рабочем листе (A, B, C для стиля A1 и 1, 2, 3, … для стиля R1C1) и имя ячейки:
Как известно, в Excel есть 3 типа ссылок (тут можно почитать подробнее): относительные (А1), абсолютные ($А$1) и смешанные ($А1 и А$1), где знак доллара ($) служит закреплением номера строки или столбца.
В случае со стилем R1C1 также можно использовать любой тип ссылки, но принцип их составления будет несколько другим:
- RC. Относительная ссылка на текущую ячейку;
- R1C1. Абсолютная ссылка на ячейку на пересечении строки 1 и столбца 1 (аналог $A$1);
- RC2. Ссылка на ячейку из 2 столбца текущей строки;
- R3C. Ссылка на ячейку из 3 строки текущего столбца;
- RC[4]. Ссылка на ячейку на 4 столбца правее текущей ячейки;
- R[-5]C. Ссылка на ячейку на 5 строк левее текущей ячейки;
- R6C[7]. Ссылка на ячейку из 6 строки и на 7 столбцов правее текущей ячейки;
- и т.д.
В общем и целом, получается, что аналогом закрепления строки или столбца (символа $) для стиля R1C1 является использование чисел после символа строки или столбца (т.е. после букв R или C).
Применение квадратных скобок позволяет сделать относительное смещение относительно ячейки, в которой введена формула (к примеру, R[-2]C делает смещение на 2 строки вниз, RC[2] — смещение на 2 столбца вправо и т.д.). Таким образом, смещение вниз или вправо обозначается положительными числами, влево или вверх — отрицательными.
В итоге, основное и самое главное отличие между А1 и R1C1 состоит в том, что для относительных ссылок стиль А1 за точку отсчета берет начало листа, а R1C1 ячейку в которой написана формула.
Именно на этом и строятся основные преимущества использования R1C1, давайте подробнее на них остановимся.
Где это может быть полезно
А вот это правильный вопрос. Если звезды зажигают, то это кому-нибудь нужно. Есть несколько ситуаций, когда режим ссылок R1C1 удобнее, чем классический режим А1:
- При проверке формул и поиске ошибок в таблицах иногда гораздо удобнее использовать режим ссылок R1C1, потому что в нем однотипные формулы выглядят не просто похоже, а абсолютно одинаково. Сравните, например, одну и ту же таблицу в режиме отладки формул (CTRL+~) в двух вариантах адресации:
Найти ошибку в режиме R1C1 намного проще, правда?
- Если большая таблица с данными на вашем листе начинает занимать уже по нескольку сотен строк по ширине и высоте, то толку от адреса ячейки типа BT235 в формуле немного. Видеть номер столбца в такой ситуации может быть гораздо полезнее, чем его же буквы.
- Некоторые функции Excel, например ДВССЫЛ (INDIRECT) могут работать в двух режимах – A1 или R1C1. И иногда оказывается удобнее использовать второй.
- В коде макросов на VBA часто гораздо проще использовать стиль R1C1 для ввода формул в ячейки, чем классический A1. Так, например, если нам надо сложить два столбца чисел по десять ячеек в каждом (A1:A10 и B1:B10,) то мы могли бы использовать в макросе простой код:
Range("C1:C10").FormulaR1C1="=RC[-2]*RC[-1]"
т.к. в режиме R1C1 все формулы будут одинаковые. В классическом же представлении в ячейках столбца С все формулы разные, и нам пришлось бы писать код циклического прохода по каждой ячейке, чтобы определить для нее формулу персонально, т.е. что-то типа:
For Each cell In Range("C1:C10") cell.Formula = "=" & cell.Offset(0, -2).Address & "*" & cell.Offset(0, -1).Address Next cell
Ошибки в формуле Excel отображаемые в ячейках
В данном уроке будут описаны значения ошибок формул, которые могут содержать ячейки. Зная значение каждого кода (например: #ЗНАЧ!, #ДЕЛ/0!, #ЧИСЛО!, #Н/Д!, #ИМЯ!, #ПУСТО!, #ССЫЛКА!) можно легко разобраться, как найти ошибку в формуле и устранить ее.
Как убрать #ДЕЛ/0 в Excel
Как видно при делении на ячейку с пустым значением программа воспринимает как деление на 0. В результате выдает значение: #ДЕЛ/0! В этом можно убедиться и с помощью подсказки.
В других арифметических вычислениях (умножение, суммирование, вычитание) пустая ячейка также является нулевым значением.
Результат ошибочного вычисления – #ЧИСЛО!
Неправильное число: #ЧИСЛО! – это ошибка невозможности выполнить вычисление в формуле.
Несколько практических примеров:
Ошибка: #ЧИСЛО! возникает, когда числовое значение слишком велико или же слишком маленькое. Так же данная ошибка может возникнуть при попытке получить корень с отрицательного числа. Например, =КОРЕНЬ(-25).
В ячейке А1 – слишком большое число (10^1000). Excel не может работать с такими большими числами.
В ячейке А2 – та же проблема с большими числами. Казалось бы, 1000 небольшое число, но при возвращении его факториала получается слишком большое числовое значение, с которым Excel не справиться.
В ячейке А3 – квадратный корень не может быть с отрицательного числа, а программа отобразила данный результат этой же ошибкой.
Как убрать НД в Excel
Значение недоступно: #Н/Д! – значит, что значение является недоступным для формулы:
Записанная формула в B1: =ПОИСКПОЗ(„Максим”; A1:A4) ищет текстовое содержимое «Максим» в диапазоне ячеек A1:A4. Содержимое найдено во второй ячейке A2. Следовательно, функция возвращает результат 2. Вторая формула ищет текстовое содержимое «Андрей», то диапазон A1:A4 не содержит таких значений. Поэтому функция возвращает ошибку #Н/Д (нет данных).
Присваивание объекта переменной
В Excel VBA объект может быть присвоен переменной при помощи ключевого слова Set:
Dim DataWb As Workbook Set DataWb = Workbooks("Книга1.xlsx")
Активный объект
В любой момент времени в Excel есть активный объект Workbook – это рабочая книга, открытая в этот момент. Точно так же существует активный объект Worksheet, активный объект Range и так далее.
Сослаться на активный объект Workbook или Sheet в коде VBA можно как на ActiveWorkbook или ActiveSheet, а на активный объект Range – как на Selection.
Если в коде VBA записана ссылка на рабочий лист, без указания к какой именно рабочей книге он относится, то Excel по умолчанию обращается к активной рабочей книге. Точно так же, если сослаться на диапазон, не указывая определённую рабочую книгу или лист, то Excel по умолчанию обратится к активному рабочему листу в активной рабочей книге.
Таким образом, чтобы сослаться на диапазон A1:B10 на активном рабочем листе активной книги, можно записать просто:
Смена активного объекта
Если в процессе выполнения программы требуется сделать активной другую рабочую книгу, другой рабочий лист, диапазон и так далее, то для этого нужно использовать методы Activate или Select вот таким образом:
Sub ActivateAndSelect() Workbooks("Книга2").Activate Worksheets("Лист2").Select Worksheets("Лист2").Range("A1:B10").Select Worksheets("Лист2").Range("A5").Activate End Sub
Методы объектов, в том числе использованные только что методы Activate или Select, далее будут рассмотрены более подробно.
Свойства объектов
Каждый объект VBA имеет заданные для него свойства. Например, объект Workbook имеет свойства Name (имя), RevisionNumber (количество сохранений), Sheets (листы) и множество других. Чтобы получить доступ к свойствам объекта, нужно записать имя объекта, затем точку и далее имя свойства. Например, имя активной рабочей книги может быть доступно вот так: ActiveWorkbook.Name. Таким образом, чтобы присвоить переменной wbName имя активной рабочей книги, можно использовать вот такой код:
Dim wbName As String wbName = ActiveWorkbook.Name
Ранее мы показали, как объект Workbook может быть использован для доступа к объекту Worksheet при помощи такой команды:
Workbooks("Книга1").Worksheets("Лист1")
Это возможно потому, что коллекция Worksheets является свойством объекта Workbook.
Некоторые свойства объекта доступны только для чтения, то есть их значения пользователь изменять не может. В то же время существуют свойства, которым можно присваивать различные значения. Например, чтобы изменить название активного листа на “Мой рабочий лист“, достаточно присвоить это имя свойству Name активного листа, вот так:
ActiveSheet.Name = "Мой рабочий лист"
Синтаксис
=INDIRECT(ref_text, [a1]) – английская версия
=ДВССЫЛ(ссылка_на_текст;[a1]) – русская версия
Аргументы функции
- ref_text (ссылка_на_текст) – текстовая строка, которая содержит в себе ссылку на ячейку или именованный диапазон;
- [a1] – логическое значение, которое определяет тип ссылки используемой в аргументе ref_text (ссылка_на_текст). Значения аргумента могут быть TRUE (ссылка указана в формате “А1”) или FALSE (ссылка указана в формате “R1C1”). Если не указать этот аргумент, то Excel автоматически определит его значение как TRUE.
Создаем не сдвигающуюся начальную ссылку
В первом примере в столбцах C и E находятся одинаковые числа, их суммы, посчитанные при помощи функции SUM (СУММ), тоже одинаковы. Тем не менее, формулы немного отличаются. В ячейке C8 формула вот такая:
=SUM(C2:C7)
=СУММ(C2:C7)
В ячейке E8 функция INDIRECT (ДВССЫЛ) создаёт ссылку на начальную ячейку E2:
=SUM(INDIRECT("E2"):E7)
=СУММ(ДВССЫЛ("E2"):E7)
Если вверху листа вставить строку и добавить значение для января (Jan), то сумма в столбце C не изменится. Изменится формула, отреагировав на прибавление строки:
=SUM(C3:C8)
=СУММ(C3:C8)
Однако, функция INDIRECT (ДВССЫЛ) фиксирует E2 как начальную ячейку, поэтому значение января автоматически включается в подсчёт суммы по столбцу E. Конечная ячейка изменилась, но на начальную это не повлияло.
=SUM(INDIRECT("E2"):E8)
=СУММ(ДВССЫЛ("E2"):E8)
Создаем ссылку на статичный именованный диапазон
Функция INDIRECT (ДВССЫЛ) может создать ссылку на именованный диапазон. В этом примере голубые ячейки составляют диапазон NumList. Кроме этого, из значений в столбце B создан еще и динамический диапазон NumListDyn, зависящий от количества чисел в этом столбце.
Сумма для обоих диапазонов может быть вычислена, просто задав его имя в качестве аргумента для функции SUM (СУММ), как это можно увидеть в ячейках E3 и E4.
=SUM(NumList) или =СУММ(NumList)
=SUM(NumListDyn) или =СУММ(NumListDyn)
Вместо того, чтобы вводить с клавиатуры имя диапазона в функцию SUM (СУММ), Вы можете сослаться на имя, записанное в одной из ячеек листа. Например, если имя NumList записано в ячейке D7, то формула в ячейке E7 будет вот такая:
=SUM(INDIRECT(D7))
=СУММ(ДВССЫЛ(D7))
К сожалению, функция INDIRECT (ДВССЫЛ) не может создать ссылку на динамический диапазон, поэтому, когда Вы скопируете эту формулу вниз в ячейку E8, то получите сообщение об ошибке #REF! (#ССЫЛКА!).
Создаём ссылку используя информацию о листе, строке и столбце
Вы легко можете создать ссылку, опираясь на номера строк и столбцов, а также используя значение FALSE (ЛОЖЬ) для второго аргумента функции INDIRECT (ДВССЫЛ). Так создается ссылка стиля R1C1. В этом примере мы дополнительно добавили к ссылке имя листа – ‘MyLinks’!R2C2
=INDIRECT("'"&B3&"'!R"&C3&"C"&D3,FALSE)
=ДВССЫЛ("'"&B3&"'!R"&C3&"C"&D3;ЛОЖЬ)
Источники
- https://my-excel.ru/vba/tdsheet-excel-chto-jeto.html
- https://www.planetaexcel.ru/techniques/1/2783/
- https://tutorexcel.ru/osnovy/stili-ssylok-r1c1-i-a1-v-excel/
- https://www.planetaexcel.ru/techniques/11/113/
- https://exceltable.com/formuly/kak-ubrat-oshibki-v-yacheykah
- https://office-guru.ru/excel/obekty-excel-466.html
- https://excelhack.ru/funkciya-indirect-dvssyl-v-excel/
- https://office-guru.ru/excel/30xl30d-dvssyl-indirect-160.html
Функция ДВССЫЛ (INDIRECT) — одна из наиболее трудных в освоении функций Excel. Однако умение использовать ее позволит вам решать многие из задач, кажущихся вам сейчас неразрешимыми. По сути, если в формуле есть раздел ДВССЫЛ со ссылкой на ячейку, эта ссылка обрабатывается как содержимое соответствующей ячейки. [1] Например (рис. 1), в ячейке С4 я ввел формулу =ДВССЫЛ(А4), и Excel возвратил значение, равное 6. Excel возвращает именно это значение, поскольку ссылка на А4 немедленно заменяется текстовой строкой В4. Следовательно, формула обрабатывается как =В4, что дает нам 6. По аналогии, если ввести в ячейке С5 формулу =ДВССЫЛ(А5), Excel вернет значение ячейки В5, то есть 9.
Рис. 1. Простой пример функции ДВССЫЛ
Скачать заметку в формате Word или pdf, также доступны примеры и Задание_3 в формате Excel2013
1. Формулы моей электронной таблицы часто содержат ссылки на ячейки, диапазоны или на то и на другое вместе. Можно ли не изменять ссылки в формулах, а поместить их в отдельные ячейки, чтобы редактировать ссылки на ячейки и диапазоны, не затрагивая при этом формулы?
В диапазоне ячеек В4:Н16 (рис. 2) приведены данные о ежемесячных продажах шести товаров за 12 месяцев. Сейчас я подсчитаю общие продажи каждого товара за месяцы со 2 по 12. Простейший способ подсчитать это — скопировать формулу СУММ(С6:С16) из ячейки С18 в диапазон D18:H18. Предположим, вам потребовалось изменить месяцы, по которым производится подсчет. Скажем, вы решите подсчитать общие продажи за месяцы 3–12. Можно изменить формулу в ячейке С18 на СУММ(С7:С16) и затем скопировать ее в диапазон D18:H18. Однако может быть не всегда удобно, поскольку вам приходится копировать формулу из ячейки С18 в диапазон D18:H18, и, не просматривая формул, никто не узнает, какие строки суммируются.
Рис. 2. Функция ДВССЫЛ позволяет изменять ссылки на ячейки в формулах, не изменяя сами формулы
Функция ДВССЫЛ предлагает другое решение. Я указал в ячейках D2 и Е2 номера начальной и конечной суммируемых строк. Теперь, при использовании функции ДВССЫЛ, мне достаточно изменить значения в ячейках D2 и Е2, чтобы конечная сумма обновилась, включив только те строки, которые мы хотим. Кроме того, значения ячеек D2 и Е2 наглядно показывают, какие строки (месяцы) суммируются! Все, что мне требуется, — скопировать из ячейки С18 в диапазон D18:H18 формулу =СУММ(ДВССЫЛ(C$3&$D$2&»:»&C$3&$E$2)). Каждая ссылка на ячейку в этой формуле обрабатывается как содержимое соответствующей ячейки. С$3 обрабатывается как С, $D$2 — как 6, а $Е$2 — как 16. Используя символ конкатенации — & (сцепления), Excel обрабатывает эту формулу как СУММ(С6:С16), что нам и требуется. Формула в ячейке D18 обрабатывается как СУММ(D6:D16), что также дает нужный нам результат. Конечно, если нам захочется просуммировать продажи, скажем, с 4 по 6 месяц, мы просто введем 8 в ячейку D2 и 10 в ячейку Е2. После этого формула в ячейке С18 вернет 33 + 82 + 75 = 190.
2. В ячейке В1 книги Excel, начиная с Лист1 и заканчивая Лист7 (рис. 3) содержатся данные о продажах товара за месяц. Есть ли какой-нибудь простой способ написать и скопировать формулу, которая выводила бы данные о продажах этого товара за каждый месяц на одном листе?
Рис. 3. Данные о продажах товара за 1–7 месяц, выведенные с помощью функции ДВССЫЛ
Предположим, Лист1 содержит данные о продажах за первый месяц, Лист2 — за второй и т.д. Пусть в первом месяце продажи равны 1. Например, вы хотите вывести продажи за все месяцы на одном листе. Нудный способ — подсчитать продажи за первый месяц с помощью формулы =Лист1!В1 продажи за второй месяц с помощью формулы =Лист2!В1 и т.д. Если ваши данных охватывают 100 месяцев, такое решение грозит грандиозной головной болью. Гораздо более изящный способ — вывести данные о продажах за первый месяц в ячейке С4 листа Лист1 с помощью формулы =ДВССЫЛ($A$4&B4&»!B1″), Excel обработает $A$4 как «Лист», В4 — как 1, и «!B1» — как строку текста !В1. Формула целиком будет обработана как =Лист1!В1, то есть покажет данные о продажах за первый месяц, содержащиеся в ячейке В1 листа Лист1. Скопировав эту формулу в диапазон С5:С10, вы отобразите содержимое ячейки В1 листов со 2 по 7. Обратите внимание: при копировании формулы из ячейки С4 в ячейку С5 ссылка на В4 заменяется ссылкой на В5, и формула в ячейке С5 возвращает значение ячейки Лист2!В1 и т.д.
3. Предположим, я суммирую значения из диапазона А5:А10 посредством формулы СУММ(А5:А10). Если вставить где-нибудь между 5 и 10 строками пустую строку, формула автоматически изменится на СУММ(А5:А11). Можно ли написать формулу, которая при вставке пустой строки между 5 и 10 строками все равно суммировала бы значения из диапазона А5:А10?
Рис. 4 иллюстрирует несколько способов сложения чисел из диапазона А5:А10. В ячейке А12 я ввел обычную формулу СУММ(А5:А10). Аналогичным образом формула СУММ($А$5:$А$10) в ячейке С9 тоже возвращает значение 33. Тем не менее, если вставить строку между 5 и 10 строками, обе формулы попытаются сложить ячейки диапазона А5:А11.
Функция ДВССЫЛ (INDIRECT) предоставляет, как минимум, два способа сложения значений из диапазона А5:А10. В ячейке D9 я ввел формулу =СУММ(ДВССЫЛ(«A5:A10»)). Excel обрабатывает ДВССЫЛ(«A5:A10») как строку текста «A5:A10», и поэтому, даже если я добавлю строку в электронную таблицу, формула по-прежнему будет суммировать значения из диапазона А5:А10.
Рис. 4. Несколько способов сложения значений ячеек из диапазона А5:А10; под значением суммы написана формула
Еще один вариант сложения значений из диапазона А5:А10 при помощи функции ДВССЫЛ – формула =СУММ(ДВССЫЛ(«A»&C4&»:A»&D4)), которую я ввел в ячейке С5. Excel обрабатывает ссылку на С3 как 5, а ссылку на D3 — как 10, в результате чего формула преобразуется в СУММ(А5:А10). Вставка пустой строки между 5 и 10 строками никак не скажется на формуле, поскольку ссылка на С3 по-прежнему будет обрабатываться как 5, а ссылка на D3 — как 10. На рис. 5 показаны результаты суммирования, выполненные посредством наших четырех формул после того, как ниже 7-й строки была добавлена пустая строка.
Рис. 5. Результаты, возвращенные формулами СУММ после того, как ниже строки 7 была вставлена пустая строка
Обратите внимание: классические формулы СУММ, не включающие оператор ДВССЫЛ, автоматически изменились и суммируют значения из диапазона А5:А11, по-прежнему возвращая значение 33. Две формулы СУММ, включающие оператор ДВССЫЛ, суммируют значения из диапазона А5:А10, в результате при вычислениях теряется число 2 (оно теперь находится в ячейке A11). Формулы СУММ, содержащие оператор ДВССЫЛ, возвращают значение 31.
Контрольные задания (с ответами)
1. Функция АДРЕС возвращает адрес ячейки, сопоставленный со строкой и столбцом. Например, формула АДРЕС(3;4) возвращает $D$3. Что вернет формула =ДВССЫЛ(АДРЕС(3;4))?
2. Лист Задание_2 содержит данные о продажах пяти товаров в четырех регионах. С помощью функции ДВССЫЛ создайте формулы, которые позволят легко суммировать общие продажи любых последовательно пронумерованных товаров, например Товар 1—Товар 3, Товар 2—Товар 5 и т.д.
3. Книга Excel Задание_3 содержит шесть листов. На листе Лист1 записаны данные о продажах товаров за первый месяц. Эти данные всегда указываются в диапазоне Е5:Н5. Используя функцию ДВССЫЛ, составьте таблицу с информацией о продажах каждого товара по месяцам на отдельном листе.
Ответы
1. Формула =ДВССЫЛ(АДРЕС(3;4)) вернет значение ячейки $D$3.
2. Фрагмент формулы ДВССЫЛ(«B»&B8+1&»:»&»E»&B9+1) возвращает диапазон В3:Е5:
3. В ячейке Е9 записана формула =ДВССЫЛ($B$8&$D9&»!»&E$7&5), которая возвращает значение ячейки Лист1!Е5:
Возможно, вас также заинтересует:
Excel. Использование ДВССЫЛ для транспонирования строк в столбцы с сохранением формул
Как обойти ограничение Excel и сделать выпадающий список зависимым
Excel. Сумма цифр целого числа
[1] При написании заметки использованы материалы книги Уэйн Л. Винстон. Microsoft Excel. Анализ данных и построение бизнес-моделей, глава 22.
Поздравляю! Вы добрались до финального дня марафона 30 функций Excel за 30 дней. Это было длинное интересное путешествие, в течение которого Вы узнали много полезных вещей о функциях Excel.
30-й день марафона мы посвятим изучению функции INDIRECT (ДВССЫЛ), которая возвращает ссылку, заданную текстовой строкой. С помощью этой функции можно создавать зависимые выпадающие списки. Например, когда выбор страны из выпадающего списка определяет, какие варианты появятся в выпадающем списке городов.
Итак, давайте внимательно посмотрим теоретическую часть по функции INDIRECT (ДВССЫЛ) и изучим практические примеры её применения. Если у Вас есть дополнительная информация или примеры, пожалуйста, делитесь ими в комментариях.
Содержание
- Функция 30: INDIRECT (ДВССЫЛ)
- Как можно использовать функцию INDIRECT (ДВССЫЛ)?
- Синтаксис INDIRECT (ДВССЫЛ)
- Ловушки INDIRECT (ДВССЫЛ)
- Пример 1: Создаем не сдвигающуюся начальную ссылку
- Пример 2: Создаем ссылку на статичный именованный диапазон
- Пример 3: Создаём ссылку используя информацию о листе, строке и столбце
- Пример 4: Создаём не сдвигающийся массив чисел
Функция 30: INDIRECT (ДВССЫЛ)
Функция INDIRECT (ДВССЫЛ) возвращает ссылку, заданную текстовой строкой.
Как можно использовать функцию INDIRECT (ДВССЫЛ)?
Поскольку функция INDIRECT (ДВССЫЛ) возвращает ссылку, заданную текстовой строкой, то с её помощью Вы сможете:
- Создать не сдвигающуюся начальную ссылку.
- Создать ссылку на статичный именованный диапазон.
- Создать ссылку, используя информацию о листе, строке и столбце.
- Создать не сдвигающийся массив чисел.
Синтаксис INDIRECT (ДВССЫЛ)
Функция INDIRECT (ДВССЫЛ) имеет вот такой синтаксис:
INDIRECT(ref_text,a1)
ДВССЫЛ(ссылка_на_ячейку;a1)
- ref_text (ссылка_на_ячейку) – это текст ссылки.
- a1 – если равен TRUE (ИСТИНА) или не указан, то будет использован стиль ссылки A1; а если FALSE (ЛОЖЬ), то стиль R1C1.
Ловушки INDIRECT (ДВССЫЛ)
- Функция INDIRECT (ДВССЫЛ) пересчитывается при любом изменении значений на листе Excel. Это может сильно замедлить работу Вашей книги, если функция используется во многих формулах.
- Если функция INDIRECT (ДВССЫЛ) создаёт ссылку на другую книгу Excel, то эта книга должна быть открыта, иначе формула сообщит об ошибке #REF! (#ССЫЛКА!).
- Если функция INDIRECT (ДВССЫЛ) создаёт ссылку на диапазон, превышающий предельное число строк и столбцов, то формула сообщит об ошибке #REF! (#ССЫЛКА!).
- Функция INDIRECT (ДВССЫЛ) не может создать ссылку на динамический именованный диапазон.
Пример 1: Создаем не сдвигающуюся начальную ссылку
В первом примере в столбцах C и E находятся одинаковые числа, их суммы, посчитанные при помощи функции SUM (СУММ), тоже одинаковы. Тем не менее, формулы немного отличаются. В ячейке C8 формула вот такая:
=SUM(C2:C7)
=СУММ(C2:C7)
В ячейке E8 функция INDIRECT (ДВССЫЛ) создаёт ссылку на начальную ячейку E2:
=SUM(INDIRECT("E2"):E7)
=СУММ(ДВССЫЛ("E2"):E7)
Если вверху листа вставить строку и добавить значение для января (Jan), то сумма в столбце C не изменится. Изменится формула, отреагировав на прибавление строки:
=SUM(C3:C8)
=СУММ(C3:C8)
Однако, функция INDIRECT (ДВССЫЛ) фиксирует E2 как начальную ячейку, поэтому значение января автоматически включается в подсчёт суммы по столбцу E. Конечная ячейка изменилась, но на начальную это не повлияло.
=SUM(INDIRECT("E2"):E8)
=СУММ(ДВССЫЛ("E2"):E8)
Пример 2: Создаем ссылку на статичный именованный диапазон
Функция INDIRECT (ДВССЫЛ) может создать ссылку на именованный диапазон. В этом примере голубые ячейки составляют диапазон NumList. Кроме этого, из значений в столбце B создан еще и динамический диапазон NumListDyn, зависящий от количества чисел в этом столбце.
Сумма для обоих диапазонов может быть вычислена, просто задав его имя в качестве аргумента для функции SUM (СУММ), как это можно увидеть в ячейках E3 и E4.
=SUM(NumList) или =СУММ(NumList)
=SUM(NumListDyn) или =СУММ(NumListDyn)
Вместо того, чтобы вводить с клавиатуры имя диапазона в функцию SUM (СУММ), Вы можете сослаться на имя, записанное в одной из ячеек листа. Например, если имя NumList записано в ячейке D7, то формула в ячейке E7 будет вот такая:
=SUM(INDIRECT(D7))
=СУММ(ДВССЫЛ(D7))
К сожалению, функция INDIRECT (ДВССЫЛ) не может создать ссылку на динамический диапазон, поэтому, когда Вы скопируете эту формулу вниз в ячейку E8, то получите сообщение об ошибке #REF! (#ССЫЛКА!).
Пример 3: Создаём ссылку используя информацию о листе, строке и столбце
Вы легко можете создать ссылку, опираясь на номера строк и столбцов, а также используя значение FALSE (ЛОЖЬ) для второго аргумента функции INDIRECT (ДВССЫЛ). Так создается ссылка стиля R1C1. В этом примере мы дополнительно добавили к ссылке имя листа – ‘MyLinks’!R2C2
=INDIRECT("'"&B3&"'!R"&C3&"C"&D3,FALSE)
=ДВССЫЛ("'"&B3&"'!R"&C3&"C"&D3;ЛОЖЬ)
Пример 4: Создаём не сдвигающийся массив чисел
Иногда в формулах Excel необходимо использовать массив чисел. В следующем примере мы хотим получить среднее из 3-х наибольших чисел в столбце B. Числа могут быть вписаны в формулу, как это сделано в ячейке D4:
=AVERAGE(LARGE(B1:B8,{1,2,3}))
=СРЗНАЧ(НАИБОЛЬШИЙ(B1:B8;{1;2;3}))
Если Вам потребуется массив побольше, то Вы вряд ли захотите вписывать в формулу все числа. Второй вариант – это использовать функцию ROW (СТРОКА), как это сделано в формуле массива, введенной в ячейку D5:
=AVERAGE(LARGE(B1:B8,ROW(1:3)))
=СРЗНАЧ(НАИБОЛЬШИЙ(B1:B8;СТРОКА(1:3)))
Третий вариант – это использовать функцию ROW (СТРОКА) вместе с INDIRECT (ДВССЫЛ), как это сделано с помощью формулы массива в ячейке D6:
=AVERAGE(LARGE(B1:B8,ROW(INDIRECT("1:3"))))
=СРЗНАЧ(НАИБОЛЬШИЙ(B1:B8;СТРОКА(ДВССЫЛ("1:3"))))
Результат для всех 3-х формул будет одинаковым:
Однако, если сверху листа вставить строки, вторая формула возвратит не верный результат из-за того, что ссылки в формуле изменятся вместе со сдвигом строк. Теперь, вместо среднего значения трёх максимальных чисел, формула возвращает среднее 3-го, 4-го и 5-го по величине чисел.
При помощи функции INDIRECT (ДВССЫЛ), третья формула сохраняет корректные ссылки на строки и продолжает показывать верный результат.
Оцените качество статьи. Нам важно ваше мнение:
- НЕПРАВИЛЬНАЯ функция в Excel
Функция INDIRECT Excel (Содержание)
- НЕПРАВИЛЬНАЯ функция в Excel
- НЕПРАВИЛЬНАЯ Формула в Excel
- Как использовать функцию INDIRECT в Excel?
НЕПРАВИЛЬНАЯ функция в Excel
Функция INDIRECT не является для нас обычным пользователем формулы. Это один из классных скрытых трюков, которые могут повысить ваш уровень производительности.
Как следует из самого названия, оно используется для косвенной ссылки на ячейку в функции листа.
НЕПРАВИЛЬНАЯ Формула в Excel
Функция INDIRECT состоит из двух аргументов. Один из них — Ref_Text, который является обязательным аргументом, а второй — (a1).
- Ref_Text: Ссылка на ячейку содержит либо ссылку в стиле A1, либо ссылку в стиле R1C1, либо имя, определяемое именем / формулой, либо ссылку на ячейку в текстовой форме. Этот аргумент может ссылаться на другую книгу.
- (a1): это необязательный аргумент. Этот аргумент состоит из двух логических значений, ИСТИНА или ЛОЖЬ. Независимо от значения, которое мы получили в Ref_Text, оно отображается как Ссылка на стиль А1, если оно имеет значение ИСТИНА, и отображается как Ссылка на стиль R1C1, если оно равно ЛОЖЬ.
Примечание. Если последний аргумент, если он опущен по умолчанию, в качестве аргумента Excel будет принимать значение ИСТИНА.
Как использовать функцию INDIRECT в Excel?
Функция INDIRECT в Excel очень проста в использовании. Давайте теперь посмотрим, как использовать функцию INDIRECT в Excel с помощью нескольких примеров.
Вы можете скачать этот шаблон приложения INDIRECT Function здесь — шаблон приложения INDIRECT Function Excel
Пример № 1 — НЕПОСРЕДСТВЕННАЯ функция с именованными диапазонами
Ниже в таблице приведены объемы продаж различных менеджеров по продажам в 4 регионах. В ячейке H4 нам нужно получить сумму региона, которая упоминается в ячейке G4.
Сочетание НЕПРАВИЛЬНЫХ И Именованных диапазонов неоценимо в этом контексте. Именованный диапазон будет определять диапазон ячеек в одном имени.
Шаг 1: Создайте именованный диапазон для каждого региона. Перейдите на вкладку « Формула » и нажмите « Диспетчер имен» .
- Откроется диалоговое окно «Новое имя». Дайте имя как Восток.
Примечание. Повторите эту задачу для каждого региона. Дайте название региона каждому менеджеру имени.
Шаг 2: Теперь примените функцию INDIRECT вместе с функцией SUM, чтобы получить сумму в ячейке H4.
Примечание. Измените имя региона в ячейке G4, чтобы получить общее количество по каждому региону.
Совет для профессионалов: создайте выпадающий список для регионов.
Пример №2 — НЕПОСРЕДСТВЕННАЯ функция со средней функцией
Используйте предыдущие данные о продажах разных менеджеров по продажам в 4 регионах. В ячейке H7 нам нужно получить среднее значение по региону, которое упоминается в ячейке G7.
Теперь примените функцию INDIRECT вместе с функцией AVERAGE, чтобы получить сумму в ячейке H4.
Пример # 3 — INDIRECT Функция для возврата последнего значения ячейки
С помощью приведенных ниже данных нам нужно найти значение Profit последнего элемента. В ячейке H2 прибыль последнего элемента.
В этом примере мы рассмотрим ссылку на стиль R1C1 с INDIRECT, чтобы вернуть последнее значение ячейки. Здесь мы использовали функцию COUNTA, чтобы получить номер последнего столбца.
В приведенной выше формуле мы объединили R10 (строка 10) с C10 с помощью функции COUNTA. COUNTA вернет значение 5 (номер последнего столбца). Сочетание того и другого даст « R10C5 », т. Е. Косвенным будет значение из строки 10 и столбца 5.
Часть FALSE аргумента будет запрашивать стиль ссылки на ячейку в стиле R1C1.
По мере того, как количество предметов увеличивается, эта функция всегда будет давать значение прибыли последнего предмета.
Пример № 4 — INDIRECT + Named Range + VLookup
Комбинация Indirect с Named Range & Vlookup будет динамичной комбинацией. Необходимо включить пример Indirect с Vlookup.
В таблице ниже примените функцию VLOOKUP в ячейке B15, чтобы получить значение продаж на основе ячеек B13 и B14.
Шаги, участвующие в до применения Vlookup.
- Создайте раскрывающийся список для региона и для менеджера по продажам.
- Создайте 4 именованных диапазона (см. Пример 1) для всех 4 регионов. Обратите внимание, применяются именные диапазоны, включая имя менеджера по продажам.
- После двух вышеуказанных шагов примените функцию VLOOKUP в ячейке B15.
Поскольку мы определили список диапазонов с помощью East_List, West_List, North_List, South_List, то, что будет делать функция INDIRECT, это даст ссылку на этот конкретный список регионов. Поэтому Vlookup будет рассматривать это как диапазон таблиц и выдаст результат для соответствующего менеджера по продажам.
Из выпадающего списка измените игру с другим регионом и разными менеджерами по продажам.
Пример № 5 — Обратитесь к рабочему листу с опосредованным.
Функция INDIRECT также может извлечь значение ячейки из другой таблицы. Этот пример даст объяснение этому.
- Косвенный лист — это лист, в который мы вводим формулу.
- Сводный лист — это лист с данными.
- В косвенном листе введите формулу в ячейку C2.
- Вам нужно дать ссылку на ячейку B7 в Сводной ведомости.
Ниже изображения будут отображать различные листы в одном окне.
Здесь мы объединили сводный лист в ячейке A2 косвенного листа и взяли ссылку на ячейку B7 из сводного листа в косвенном листе.
Примечание: функция INDIRECT — не самая часто используемая формула. Но может быть смертельным оружием в крайних случаях, чтобы сэкономить много времени и автоматизировать значение ячейки. Попытайтесь использовать регулярно, и вы поймете это.
Что нужно помнить о НЕПОСРЕДСТВЕННОЙ функции
- В противном случае ссылка должна быть действительной; функция вернет ошибку #REF.
- Когда он ссылается на другую рабочую книгу, соответствующая рабочая книга должна находиться в открытом режиме, чтобы получить результаты.
- Обычно функция INDIRECT по умолчанию возвращает ссылку на стиль A1.
- Когда мы используем (a1) ссылку как FALSE, нам нужно поставить 0 и 1 для TRUE.
- В ссылке на стиль R1C1 вы можете использовать формулы, такие как COUNTA, чтобы динамически давать ссылку на строку или столбец. Если данные увеличиваются, это будет динамическая функция, и нет необходимости менять ее время от времени.
Рекомендуемые статьи
Это было руководство к НЕПОСРЕДСТВЕННО. Здесь мы обсуждаем формулу INDIRECT и как использовать функцию INDIRECT вместе с практическими примерами и загружаемыми шаблонами Excel. Вы также можете взглянуть на эти другие функции поиска и справки в
- Как использовать функцию COLUMN в Excel?
- ВЫБЕРИТЕ функцию в Excel
- Excel И Функция
- VBA Excel программирование