Excel функция возвращает диапазон

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

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

  • ЯЧЕЙКА

  • COLUMN

  • FILTERXML

  • FORMULATEXT

  • Частота

  • Роста

  • ГИПЕРССЫЛКА

  • INDEX

  • Косвенные

  • ISFORMULA 

  • Линейн

  • LOGEST

  • МОБР

  • МУМЮЛ

  • Режим. Мульт

  • МЮНИК

  • СМЕЩ

  • Строки

  • ТРАНСП

  • Тенденция

  • Все пользовательские функции

Дополнительные сведения

Вы всегда можете задать вопрос специалисту Excel Tech Community или попросить помощи в сообществе Answers community.

Нужна дополнительная помощь?

Это седьмая глава книги Билла Джелена. Всё о ВПР: от первого применения до экспертного уровня.

Функции СМЕЩ и ДВССЫЛ являются весьма сложными для восприятия. Настоящая заметка и примеры, содержащиеся в ней, должны позволить вам освоить эти функции. См. также ссылки на дополнительный материал в конце заметки.

Суммирование по диапазону, размер которого вычисляется в ячейке. Проблема: мне нужно просуммировать значения в диапазоне, начинающемся в ячейке A5, а количество строк диапазона суммирования задано в ячейке С5 (рис. 7.1).

Стратегия: использовать подвижную (гибкую) функцию СМЕЩ, которая позволит вам:

  • Начать отсчет из конкретной ячейки или диапазона ячеек;
  • Сместить начало отсчета на заданное число строк и столбцов;
  • Задать число строк и столбцов диапазона, считая от нового начала отсчета.

Рис. 7.1. Эта формула суммирует значения в диапазоне А5_А9

Рис. 7.1. Эта формула суммирует значения в диапазоне А5:А9

Скачать заметку в формате Word или pdf, примеры в формате Excel

Первый аргумент функции СЩЕЩ задает начало отсчета. В нашем примере – ячейку А5. Второй и третий аргументы позволяют изменить начало отсчета. Это полезно, когда значения этих аргументов берутся из ячеек, в которых выполняются какие-то расчеты. В нашем примере начало отсчета не смещено (мы видим два нуля). Мы могли бы указать в качестве второго аргумента 2, и тогда начало отсчета сместилось бы в А7, или –2, и тогда стартовали бы из ячейки А3.Четвертый и пятый аргументы задают размер диапазона. Они являются необязательными. Если эти аргументы отсутствуют, то высота и ширина возвращаемого диапазона такая же, как и для исходного диапазона в первом аргументе. В нашем примере это пять строк и один столбец.

В общем случае функция СМЕЩ возвращает ссылку на диапазон или, другими словами, массив значений, хранящихся в этом диапазоне (с сохранением формата диапазона, то есть числа строк и столбцов). Если использовать СМЕЩ саму по себе, то в большинстве случаев она вернет некорректный результат (одно из значений массива) или ошибку #ЗНАЧ! Поэтому СМЕЩ, как правило, используется в качестве аргумента другой функции. В нашем примере – СУММ. Только если СМЕЩ возвращает ссылку на единственную ячейку, то и сама по себе она вернет корректный результат – значение в этой ячейке.

Измените значение в С5 с 5 на 3, и формула вернет сумму значений в диапазоне А5:А7 (рис. 7.2). При этом сама формула в ячейке С7 не поменялась.

Рис. 7.2. Измените значение в С5 на 3, и диапазон суммирования изменится

Рис. 7.2. Измените значение в С5 на 3, и диапазон суммирования изменится

СМЕЩ может использоваться, чтобы указать на ячейку выше текущей. Зачем вы идете на такие ухищрения, когда простая формула делает то же самое?

Рис. 7.3. Какая потребность в СМЕЩ, если работает простая ссылка

Рис. 7.3. Какая потребность в СМЕЩ, если работает простая ссылка =А4

Однако, что произойдет если удалить строку 4? Простая формула в столбце B даст ошибку #ССЫЛКА! Формулы СМЕЩ продолжает работать (рис. 7.4).

Рис. 7.4. Если мы предполагаем, что какая-то строка может быть удалена, то функция СМЕЩ незаменима

Рис. 7.4. Если мы предполагаем, что какая-то строка может быть удалена, то функция СМЕЩ незаменима

Дополнительные сведения: начальный диапазон может быть больше чем одна ячейка. В следующем примере начальный диапазон А4:А13. Третий аргумент функции СМЕЩ является вычисляемым – МЕСЯЦ(А1). Благодаря ему диапазон суммирования смещается на 5 столбцов вправо. Формула =СУММ(СМЕЩ(A4:A13;0;МЕСЯЦ(A1))) суммирует столбец, соответствующий дате в ячейке A1.

Рис. 7.5. Используйте СМЕЩ для перемещения диапазона суммирования на N столбцов вправо

Рис. 7.5. Используйте СМЕЩ для перемещения диапазона суммирования на N столбцов вправо

К сожалению, функция СМЕЩ является волатильной (переменной) функцией Excel. Это означает, что с каждым вычислением рабочего листа, СМЕЩ пересчитывается, даже если ни одна ячейка, связанная с ней, не изменилась. Если у вас много функций СМЕЩ, это может вызвать замедление работы Excel.

Можно использовать ИНДЕКС вместо СМЕЩ (рис. 7.6). В принципе, синтаксис функции =ИНДЕКС(массив; номер_строки; [номер_столбца]) предназначен для возврата значения одной ячейки из диапазона. Однако, если вы опустите второй аргумент, Excel вернет все строки, т.е. ссылку на диапазон F4:F13 (или массив {90:49:80:90:29:36:67:35:65:27}) Формула =СУММ(ИНДЕКС(B4:H13;;МЕСЯЦ(A1))) вернет результат эквивалентный формуле на рис. 7.5.

Рис. 7.6. ИНДЕКС с опущенным аргументом Номер_строки

Рис. 7.6. ИНДЕКС с опущенным аргументом Номер_строки вернет все строки диапазона, т.е. весь столбец

Что случилось с функцией @@? В Lotus 1-2-3 была функция @@. Если вы использовали @@(А3), Lotus пошел бы в А3. А3 должна была содержать ссылку на ячейку. Допустим, в А3 содержался текст С5. Функция @@ возвращала значение из ячейки С5.

Стратегия: в Excel также есть аналогичная функция – ДВССЫЛ. Вот несколько примеров как она работает. Рассмотрим формулу =ДВССЫЛ(F2). Excel пойдет в F2 и использует адрес ячейки, найденный там (рис. 7.7). Формула сначала смотрит в F4, а потом в С1. Имена ячеек должны быть набраны английскими буквами, иначе ДВССЫЛ вернет ошибку #ССЫЛКА! Ссылку на ячейку в функции ДВССЫЛ рассчитывается «на лету».

Рис. 7.7. F2 говорит посмотри в ячейку C1

Рис. 7.7. F2 говорит: посмотри в ячейку C1

В следующем примере (рис. 7.8) функция ВПР указывает на другой лист, основанный на номере квартала в столбце B. ДВССЫЛ использует конкатенацию (&), применяемую для сцепления текстовых строк, чтобы «на лету» построить имя листа в книге Excel.

Рис. 7.8. Имя листа Q2! рассчитывается «на лету» внутри функции ДВССЫЛ

Рис. 7.8. Имя листа Q2! рассчитывается «на лету» внутри функции ДВССЫЛ

Если вы используете имена диапазонов, значение внутри ДВССЫЛ может указывать на имя диапазона. Это создает некоторые интересные возможности поиска. Сначала назначьте имена диапазонам. Для этого выберите диапазон целиком (рис. 7.9). На вкладке ФОРМУЛЫ выберите команду создать из выделенного (или нажмите Ctrl+Shift+F3).

Рис. 7.9. Выберите диапазон подстановки, включая заголовки

Рис. 7.9. Выберите диапазон подстановки, включая заголовки

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

Рис. 7.10. Установка параметров в окне Создание имен из выделенного диапазона

Рис. 7.10. Установка параметров в окне Создание имен из выделенного диапазона

Автоматически сгенерятся имена для строк и столбцов. Например, диапазон $B$3:$I$3 получит имя Прол2, а диапазон $E$2:$E$8 имя Апр. Все имена диапазонов можно увидеть, пройдя по меню ФОРМУЛЫ –> Диспетчер имен (рис. 7.11).

Рис. 7.11. Автоматически созданные имен диапазонов в окне Диспетчера имен

Рис. 7.11. Автоматически созданные имен диапазонов в окне Диспетчера имен

Теперь у вас есть семь именованных диапазонов на основе меток (имен) в столбце A и восемь именованные диапазоны, основанные на заголовках столбцов.

И наконец, вы можете использовать функцию СУММ, чтобы найти значение на пересечении заданных строки и столбца. Как? Поясню. Очень многие пользователи применяют функцию СУММ, в которой аргументы разделены точкой с запятой или двоеточием. Например, СУММ(А2;В4) подсчитает сумму в ячейках А2 и В4, а СУММ(А2:В4) подсчитает сумму в диапазоне ячеек А2:В4 (всего 6 ячеек). Но есть еще одна мало известная возможность – разделить ссылки на диапазоны пробелом (рис. 7.12). Подробнее об операторах Excel см. Операторы и их приоритет.

Формула =СУММ(ДВССЫЛ(J10) ДВССЫЛ(J11)) сначала «на лету» вычислит значения ДВССЫЛ(J10) = Прод4 и ДВССЫЛ(J11) = Апр. При этом значения Прод4 и Апр функция СУММ будет воспринимать, как имена диапазонов. Поскольку использован оператор пробела, функция СУММ вернет значение на пересечении диапазонов Прод4 и Апр, т.е. значение из ячейки Е5.

Рис. 7.12. Необычный способ поиска по двум направлениям

Рис. 7.12. Необычный способ поиска по двум направлениям

См. также Примеры использования функции ДВССЫЛ (INDIRECT), Примеры использования функции СМЕЩ (OFFSET), Динамические диапазоны на основе функций ИНДЕКС и СМЕЩ.

Skip to content

Как использовать функцию ДВССЫЛ – примеры формул

В этой статье объясняется синтаксис функции ДВССЫЛ, основные способы ее использования и приводится ряд примеров формул, демонстрирующих использование ДВССЫЛ в Excel.

В Microsoft Excel существует множество функций, некоторые из которых просты для понимания, другие требуют длительного обучения. При этом первые используются чаще, чем вторые. И тем не менее, функция Excel ДВССЫЛ  (INDIRECT на английском) является единственной в своем роде. Эта функция Excel не выполняет никаких вычислений, не оценивает никаких условий не ищет значения.

Итак, что такое функция ДВССЫЛ (INDIRECT) в Excel и для чего ее можно использовать? Это очень хороший вопрос, и, надеюсь, вы получите исчерпывающий ответ через несколько минут, когда закончите чтение.

Функция ДВССЫЛ в Excel — синтаксис и основные способы использования

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

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

Функция ДВССЫЛ в Excel возвращает ссылку на ячейку, используя текстовую строку. Она имеет два аргумента, первый является обязательным, а второй – нет:

ДВССЫЛ(ссылка_на_ячейку; [a1])

ссылка_на_ячейку – это адрес нужной ячейки в виде текстовой строки, либо названия именованного диапазона.

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

  • Если значение ИСТИНА или опущено, то используется ссылка на ячейку в стиле A1.
  • Если ЛОЖЬ, то возвращается ссылка в виде R1C1.

Таким образом, ДВССЫЛ возвращает либо ссылку на ячейку, либо ссылку на диапазон.

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

Как работает функция ДВССЫЛ

Чтобы получить представление о работе функции, давайте создадим простую формулу, которая демонстрирует, как можно применить ДВССЫЛ в Excel.

Предположим, у вас есть число 5 в ячейке A1 и текст «A1» в ячейке C1. Теперь поместите формулу =ДВССЫЛ(C1) в любую другую ячейку и посмотрите, что произойдет:

  • Функция ДВССЫЛ обращается к значению в ячейке C1. Там в виде текстовой строки записан адрес «A1».
  • Функция ДВССЫЛ направляется по этому адресу в ячейку A1, откуда извлекает записанное в ней значение, то есть число 555.

Итак, в этом примере функция ДВССЫЛ преобразует текстовую строку в ссылку на ячейку.

Аналогичным образом можно получить ссылку на диапазон. Для этого просто нужно функции ДВССЫЛ указать два адреса – начальный и конечный. Вы видите это на скриншоте ниже.

Формула   ДВССЫЛ(C1&»:»&C2) извлекает адреса из указанных ячеек и превращается в =ДВССЫЛ(«A1:A5»).

В итоге мы получаем ссылку =A1:A5

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

Как использовать ДВССЫЛ в Excel — примеры формул

Как показано в приведенном выше примере, вы можете использовать функцию ДВССЫЛ, чтобы записать адрес ячейки как обычную текстовую строку и получить в результате значение этой ячейки. Однако этот простой пример — не более чем намек на возможности ДВССЫЛ.

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

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

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

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

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

Стиль R1C1 является обозначает координаты ячейки наоборот – за строками следуют столбцы, и к этому нужно привыкнуть:) Например, R5C1 относится к ячейке A5, которая находится в строке 5, столбце 1 на листе. Если после буквы не следует какая-либо цифра, значит, вы имеете в виду ту же строку или столбец, в которых записана сама формула.

А теперь давайте сравним на простом примере, как функция ДВССЫЛ обрабатывает адреса вида A1 и R1C1:

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

  • Формула в ячейке D1:   =ДВССЫЛ(C1)

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

  • Формула в ячейке D3:  =ДВССЫЛ(C3;ЛОЖЬ)

ЛОЖЬ во втором аргументе указывает, что указанное значение (C3) следует рассматривать как ссылку на ячейку в формате R1C1, т. е. сначала идет номер строки, за которым следует номер столбца. Таким образом, наша формула ДВССЫЛ интерпретирует значение в ячейке C3 (R2C1) как ссылку на ячейку на пересечении строки 2 и столбца 1, которая как раз и является ячейкой A2.

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

Аналогично тому, как мы создавали ссылки из значений ячеек , вы можете комбинировать текстовую строку и ссылку на ячейку с адресом прямо в формуле ДВССЫЛ, соединив их вместе при помощи оператора конкатенации (&).

В следующем примере формула =ДВССЫЛ(«А»&C1) возвращает значение из ячейки А1 на основе следующей логической цепочки:

Функция ДВССЫЛ объединяет элементы в первом аргументе ссылка_на_ячейку — текст «А» и значение из ячейки C1. Значение в C1 – это число 1, что в результате формирует адрес А1. Формула переходит к ячейке А1 и возвращает ее значение – 555.

Использование функции ДВССЫЛ с именованными диапазонами

Помимо создания ссылок на ячейки из текстовых строк, вы можете заставить функцию Excel ДВССЫЛ создавать ссылки на именованные диапазоны.

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

  • Яблоки – С2:E2
  • Лимоны — C3: E3
  • Апельсины – C4:E4 и так далее по каждому товару.

Чтобы создать динамическую ссылку Excel на любой из указанных выше диапазонов с цифрами продаж, просто запишите его имя, скажем, в H1, и обратитесь к этой ячейке при помощи формулы =ДВССЫЛ(H1).

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

  • =СУММ(ДВССЫЛ (H1))
  • =СРЗНАЧ(ДВССЫЛ (H1))
  • =МАКС(ДВССЫЛ (H1))
  • =МИН(ДВССЫЛ (H1))

Теперь, когда вы получили общее представление о том, как работает функция ДВССЫЛ в Excel, мы можем поэкспериментировать с более серьёзными формулами.

ДВССЫЛ для ссылки на другой рабочий лист

Полезность функции Excel ДВССЫЛ не ограничивается созданием «динамических» ссылок на ячейки. Вы также можете использовать ее для формирования ссылки на другие листы.

Предположим, у вас есть важные данные на листе 1, и вы хотите получить эти данные на листе 2. На скриншоте ниже показано, как можно справиться с этой задачей.

Нам поможет формула:

=ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

Давайте разбираться, как работает эта формула.

Как вы знаете, обычным способом сослаться на другой лист в Excel является указание имени этого листа, за которым следуют восклицательный знак и ссылка на ячейку или диапазон, например Лист1!A1:С10. Так как имя листа часто содержит пробелы, вам лучше заключить его (имя, а не пробел :) в одинарные кавычки, чтобы предотвратить возможную ошибку, например,

‘Лист 1!’$A$1 или для диапазона – ‘Лист 1!’$A$1:$С$10 .

Наша задача – сформировать нужный текст и передать его функции ДВССЫЛ. Все, что вам нужно сделать, это:

  • записать имя листа в одну ячейку,
  • букву столбца – в другую,
  • номер строки – в третью,  
  • объединить всё это в одну текстовую строку,
  • передать этот адрес функции ДВССЫЛ. 

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

С учетом вышеизложенного получаем шаблон ДВССЫЛ для создания ссылки на другой лист:

ДВССЫЛ («‘» & имялиста & «‘!» & имя столбца нужной ячейки & номер строки нужной ячейки )

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

ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

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

Замечание.

  • Если какая-либо из ячеек, содержащих имя листа и адреса ячеек (A2, B2 и c2 в приведенной выше формуле), будет пуста, ваша формула вернет ошибку. Чтобы предотвратить это, вы можете обернуть функцию ДВССЫЛ в функцию ЕСЛИ :

ЕСЛИ(ИЛИ(A2=»»;B2=»»;C2-“”); «»; ДВССЫЛ(«‘»&A2&»‘!»&B2&C2)

  • Чтобы формула ДВССЫЛ, ссылающаяся на другой лист, работала правильно, указанный лист должен быть открыт в Экселе, иначе формула вернет ошибку #ССЫЛКА. Чтобы не видеть сообщение об ошибке, которое может портить вид вашей таблицы, вы можете использовать функцию ЕСЛИОШИБКА, которая будет отображать пустую строку при любой возникшей ошибке:

ЕСЛИОШИБКА(ДВССЫЛ(«‘»&A2&»‘!»&B2&C2); «»)

Формула ДВССЫЛ для ссылки на другую книгу Excel

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

Чтобы упростить задачу, давайте начнем с создания ссылки на другую книгу обычным способом (апострофы добавляются, если имена вашей книги и/или листа содержат пробелы):
‘[Имя_книги.xlsx]Имя_листа’!Арес_ячейки

Но, чтобы формула была универсальной, лучше апострофы добавлять всегда – лишними не будут .

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

=ДВССЫЛ(«‘[«&$A$2&».xlsx]»&$B$2&»‘!»&C2&D2)

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

Если адреса ячеек заменить их значениями, то мы получим такой промежуточный результат:

=ДВССЫЛ(«‘[INDIRECT.xlsx]Продажи’!D3»)

Ну а итоговый результат вы видите на скриншоте ниже.

Hbc6

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

=ДВССЫЛ(«‘[» & Название книги & «]» & Имя листа & «‘!» & Адрес ячейки )

Примечание. Рабочая книга, на которую ссылается ваша формула, всегда должна быть открыта, иначе функция ДВССЫЛ выдаст ошибку #ССЫЛКА. Как обычно, функция ЕСЛИОШИБКА может помочь вам избежать этого:

=ЕСЛИОШИБКА(ДВССЫЛ(«‘[«&$A$2&».xlsx]»&$B$2&»‘!»&C2&D2); «»)

Использование функции Excel ДВССЫЛ чтобы зафиксировать ссылку на ячейку

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

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

  1. Введите любое значение в любую ячейку, например, число 555 в ячейку A1.
  2. Обратитесь к A1 из двух других ячеек тремя различными способами: =A1, =ДВССЫЛ(«A1») и ДВССЫЛ(С1), где в С1 записан адрес «А1».
  3. Вставьте новую строку над строкой 1.

Видите, что происходит? Ячейка с логическим оператором =А1 по-прежнему возвращает 555, потому что ее формула была автоматически изменена на =A2 после вставки строки. Ячейки с формулой ДВССЫЛ теперь возвращают нули, потому что формулы в них не изменились при вставке новой строки и они по-прежнему ссылаются на ячейку A1, которая в настоящее время пуста:

После этой демонстрации у вас может сложиться впечатление, что функция ДВССЫЛ больше мешает, чем помогает. Ладно, попробуем по-другому.

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

=СУММ(A2:A5)

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

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

Решение состоит в использовании функции ДВССЫЛ, например:

=СУММ(ДВССЫЛ(«A2:A5»))

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

Использование ДВССЫЛ с другими функциями Excel

Помимо СУММ, ДВССЫЛ часто используется с другими функциями Excel, такими как СТРОКА, СТОЛБEЦ, АДРЕС, ВПР, СУММЕСЛИ и т. д.

Пример 1. Функции ДВССЫЛ и СТРОКА

Довольно часто функция СТРОКА используется в Excel для возврата массива значений. Например, вы можете использовать следующую формулу массива (помните, что для этого нужно нажать Ctrl + Shift + Enter), чтобы вернуть среднее значение трех наименьших чисел в диапазоне B2:B13

{=СРЗНАЧ(НАИМЕНЬШИЙ(B2:B13;СТРОКА(1:3)))}

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

Чтобы этого не произошло, вставьте ДВССЫЛ в функцию СТРОКА, и ваша формула массива всегда будет оставаться правильной, независимо от того, сколько строк будет вставлено или удалено:

={СРЗНАЧ(НАИМЕНЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:3»))))}

Аналогично, если нам нужно найти сумму трёх наибольших значений, можно использовать ДВССЫЛ вместе с функцией СУММПРОИЗВ.

Вот пример:

={СУММПРОИЗВ(НАИБОЛЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:3»))))}

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

={СУММПРОИЗВ(НАИБОЛЬШИЙ(B2:B13;СТРОКА(ДВССЫЛ(«1:»&C1))))}

Согласитесь, что получается достаточно гибкий расчёт.

Пример 2. Функции ДВССЫЛ и АДРЕС

Вы можете использовать Excel ДВССЫЛ вместе с функцией АДРЕС, чтобы получить значение в определенной ячейке на лету.

Как вы помните, функция АДРЕС используется в Excel для получения адреса ячейки по номерам строк и столбцов. Например, формула =АДРЕС(1;3) возвращает текстовую строку «$C$1», поскольку C1 — это ячейка на пересечении 1-й строки и 3-го столбца.

Чтобы создать ссылку на ячейку, вы просто встраиваете функцию АДРЕС в формулу ДВССЫЛ, например:

=ДВССЫЛ(АДРЕС(1;3))

Конечно, эта несложная формула лишь демонстрирует технику. Более сложные примеры использования функций ДВССЫЛ И АДРЕС в Excel см. в статье Как преобразовать строки в столбцы в Excel .

И вот еще несколько примеров формул в которых используется функция ДВССЫЛ, и которые могут оказаться полезными:

  • ВПР и ДВССЫЛ — как динамически извлекать данные из разных таблиц (см. пример 2).
  • Excel ДВССЫЛ и СЧЁТЕСЛИ — как использовать функцию СЧЁТЕСЛИ в несмежном диапазоне или нескольких выбранных ячейках.

Использование ДВССЫЛ для создания выпадающих списков

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

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

В ячейке А1 вы создаете простой выпадающий список с названиями имеющихся именованных диапазонов. Для второго зависимого выпадающего списка в ячейке В2 вы используете простую формулу  =ДВССЫЛ(A1), где A1 — это ячейка, в которой выбрано имя нужного именованного диапазона.

К примеру, выбрав в первом списке второй квартал, во втором списке мы видим месяцы этого квартала.

Рис9

Чтобы сделать более сложные трехуровневые меню или раскрывающиеся списки с многоуровневыми записями, вам понадобится немного более сложная формула ДВССЫЛ в сочетании с вложенной функцией ПОДСТАВИТЬ.

Подробное пошаговое руководство по использованию ДВССЫЛ с проверкой данных Excel смотрите в этом руководстве: Как создать зависимый раскрывающийся список в Excel.

Функция ДВССЫЛ Excel — возможные ошибки и проблемы

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

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

Ошибка #ССЫЛКА! 

Чаще всего функция ДВССЫЛ возвращает ошибку #ССЫЛКА!  в следующих случаях:

  1. Аргумент ссылка_на_ячейку не является допустимой ссылкой Excel. Если вы пытаетесь передать функции текст, который не может обозначать ссылку на ячейку (например, «A1B0»), то формула приведет к ошибке #ССЫЛКА!. Во избежание возможных проблем проверьте аргументы функции ДВССЫЛ .
  2. Превышен предел размера диапазона. Если аргумент ссылка_на_ячейку вашей формулы ДВССЫЛ ссылается на диапазон ячеек за пределами строки  1 048 576 или столбца  16 384, вы также получите ошибку #ССЫЛКА в Excel 2007 и новее. Более ранние версии Excel игнорируют превышение этого лимита и действительно возвращают некоторое значение, хотя часто не то, что вы ожидаете.
  3. Используемый в формуле лист или рабочая книга закрыты.Если ваша формула с ДВССЫЛ адресуется на другую книгу или лист Excel, то эта другая книга или электронная таблица должны быть открыты, иначе ДВССЫЛ возвращает ошибку #ССЫЛКА! . Впрочем, это требование характерно для всех формул, которые ссылаются на другие рабочие книги Excel.

Ошибка #ИМЯ? 

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

Ошибка из-за несовпадения региональных настроек.

Также распространенная проблема заключается не в названии функции ДВССЫЛ, а в различных региональных настройках для разделителя списка

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

В стандартной конфигурации Windows для Северной Америки и некоторых других стран разделителем списка по умолчанию является запятая. 

В результате при копировании формулы между двумя разными языковыми стандартами Excel вы можете получить сообщение об ошибке « Мы обнаружили проблему с этой формулой… », поскольку разделитель списка, используемый в формуле, отличается от того, что установлен на вашем компьютере. Если вы столкнулись с этой ошибкой при копировании какой-либо НЕПРЯМОЙ формулы из этого руководства в Excel, просто замените все запятые (,) точками с запятой (;) (либо наоборот). В обычных формулах Excel эта проблема, естественно, не возникнет. Там Excel сам поменяет разделители исходя из ваших текущих региональных настроек.

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

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

Вот еще несколько статей по той же теме:

Как удалить сразу несколько гиперссылок В этой короткой статье я покажу вам, как можно быстро удалить сразу все нежелательные гиперссылки с рабочего листа Excel и предотвратить их появление в будущем. Решение работает во всех версиях Excel,…
Как использовать функцию ГИПЕРССЫЛКА В статье объясняются основы функции ГИПЕРССЫЛКА в Excel и приводятся несколько советов и примеров формул для ее наиболее эффективного использования. Существует множество способов создать гиперссылку в Excel. Чтобы сделать ссылку на…
Гиперссылка в Excel: как сделать, изменить, удалить В статье разъясняется, как сделать гиперссылку в Excel, используя 3 разных метода. Вы узнаете, как вставлять, изменять и удалять гиперссылки на рабочих листах, а также исправлять неработающие ссылки. Гиперссылки широко используются…
Как сделать зависимый выпадающий список в Excel? Одной из наиболее полезных функций проверки данных является возможность создания выпадающего списка, который позволяет выбирать значение из предварительно определенного перечня. Но как только вы начнете применять это в своих таблицах,…

 
 

ИНДЕКС

Программисты — это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете!

 

Kuzmich

Пользователь

Сообщений: 7998
Регистрация: 21.12.2012

 

Спасибо

Ігор Гончаренко

Ну наверно если Вы ответили наверно больше нет

 
 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

ну ещё ВЫБОР, ПЕРЕКЛЮЧ, ПРОСМОТРX
за уши можно притянуть ЕСЛИ, ЕСЛИМН )))

Изменено: buchlotnik25.03.2021 11:50:19

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 
buchlotnik

Ну с ВЫБОР вы конечно неправы. За уши не надо ничего притягивать ЕСЛИ тоже не подходит сюда
А ПЕРЕКЛЮЧ, ПРОСМОТРX у меня нет Excel2010.
Хотя ПРОСМОТР возможен

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#8

25.03.2021 12:48:58

Цитата
Евгений Смирнов написал:
Ну с ВЫБОР вы конечно неправы

обоснуйте. Что возвращает ВЫБОР в этой конструкции?

Код
=СУММ(A2:ВЫБОР(I20;A11;A18;A27;A32))
Цитата
Евгений Смирнов написал:
ЕСЛИ тоже не подходит сюда

а что возвращает ЕСЛИ в этой ситуации?  

Код
=СУММ(F2:ЕСЛИ(I20;F40;F11))
Цитата
Евгений Смирнов написал:
Хотя ПРОСМОТР возможен

а вы попробуйте

Код
=СУММ(F2:ПРОСМОТР(...

перед тем как делать заявления, это НЕ работает, в отличие от

Код
=СУММ(F2:ПРОСМОТРX(...

Изменено: buchlotnik25.03.2021 12:49:51

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 
buchlotnik

С ВЫбор ВЫ правы
Да интересно что ВЫБОР возвращает ссылку

Изменено: Евгений Смирнов25.03.2021 13:17:28

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#10

25.03.2021 13:24:59

Цитата
buchlotnik написал:
а что возвращает ЕСЛИ в этой ситуации?  

так и просто в ситуации =IF(1;M5;M8)(  =ROW(IF(1;M5;M8) — вернет номер 5й строки) возвращает диапазон. Мне кажется что CHOOSE , что ЕСЛИ, это немного притянуто за уши ибо возвращает то что указано в аргументах, в отличии от трех указанных ранее которые сам возвращают именно диапазон.

По вопросам из тем форума, личку не читаю.

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#11

25.03.2021 13:32:33

Цитата
БМВ написал:
ЕСЛИ, это немного притянуто за уши
Цитата
buchlotnik написал:
за уши можно притянуть ЕСЛИ

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

Да похоже что если в аргументах функций ВЫБОР и ЕСЛИ диапазоны то возвращается ссылка

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

Притянута за уши в этот раздел сама тема.
Какой в ней смысл?

 
vikttur

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

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

в Курилку)

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

msi2102

Пользователь

Сообщений: 3134
Регистрация: 31.03.2014

#16

25.03.2021 13:45:06

Цитата
Jack Famous написал:
в Курилку)

А потом в БУХАЛКУ  :D  

 

Так быстрее учиться тебе варианты подкидывают знатоки а ты только проверяешь
Оказывается даже Игорь Гончаренко не все функции указал а вместе хорошо получается

 

Максим В.

Пользователь

Сообщений: 6750
Регистрация: 15.02.2016

#18

25.03.2021 13:53:58

Цитата
msi2102 написал:
А потом в БУХАЛКУ  

Это завтра :D  

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

Максим В.

Пользователь

Сообщений: 6750
Регистрация: 15.02.2016

#19

25.03.2021 14:03:05

Цитата
Евгений Смирнов написал:
даже Игорь Гончаренко не все функции

Есть такое правило 20/80. 20% усилий, приносит 80% результата. Перефразируя на Эксель- 20% функций решит 80% задач.
Большинство функций не используется обычными пользователями. ИМХО.

Если в мире всё бессмысленно, — сказала Алиса, — что мешает выдумать какой-нибудь смысл? ©Льюис Кэрролл

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#20

25.03.2021 14:06:35

Цитата
msi2102 написал:
А потом в БУХАЛКУ

полностью поддерживаю  :)

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#21

25.03.2021 14:08:02

Цитата
Евгений Смирнов: даже Игорь Гончаренко

лол  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

msi2102

Пользователь

Сообщений: 3134
Регистрация: 31.03.2014

#22

25.03.2021 14:36:47

Цитата
Максим В. написал:
Перефразируя на Эксель- 20% функций решит 80% задач

А если начинаешь познавать VBA то остается всего 10% функций, и те со временем забываешь    

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#23

25.03.2021 14:48:35

Цитата
Евгений Смирнов написал:  ЕСЛИ тоже не подходит сюда

=ЕСЛИ(A1=1;B1:B15;A2:K2)
ЕСЛИОШИБКА тоже может вернуть диапазон, было бы желание )

Евгений Смирнов, если Вам ответят, что таких функций листа — 15 (17, 8…) (как спросили в названии…), Вам это поможет? :)
А обучаться стоит на реальном применении функций. От того, что вам покажут список, знаний не прибавится, Да и не всегда то, что будет в списке, можно применить для решения.

 

Jack Famous

Пользователь

Сообщений: 10846
Регистрация: 07.11.2014

OS: Win 8.1 Корп. x64 | Excel 2016 x64: | Browser: Chrome

#24

25.03.2021 16:11:30

Цитата
msi2102: если начинаешь познавать VBA то остается всего 10% функций, и те со временем забываешь

согласен  :D

Во всех делах очень полезно периодически ставить знак вопроса к тому, что вы с давних пор считали не требующим доказательств (Бертран Рассел) ►Благодарности сюда◄

 

Евгений Смирнов

Пользователь

Сообщений: 539
Регистрация: 18.02.2021

#25

25.03.2021 17:07:07

Цитата
А если начинаешь познавать VBA то остается всего 10% функций, и те со временем забываешь  

Ну наверно с 10% перебор все равно приблизительно 20% по моему надо знать хорошо.
Я удивляюсь как некоторые быстро пишут формулы. 5-10 минут и формула готова
У меня так не получается  Или когда умеешь писать в VBA голова переключается на решение в VBA
Мне проще в VBA сделать чем формулу написать. Вот и хочу немного подтянуться по формулам

 

vikttur

Пользователь

Сообщений: 47199
Регистрация: 15.09.2012

#26

25.03.2021 17:12:26

Цитата
Евгений Смирнов написал:  когда умеешь писать в VBA голова переключается на решение в VBA

Нет. Каждому овощу свой фрукт :)

 

buchlotnik

Пользователь

Сообщений: 3863
Регистрация: 31.10.2014

Excel 365 Бета-канал

#27

25.03.2021 17:38:11

Цитата
msi2102 написал:
если начинаешь познавать VBA то остается всего 10% функций

ну и очень зря — если есть штатная — на кой изобретать велосипед, причем с квадратными (в случае VBA) колесами?  :)

Соблюдение правил форума не освобождает от модераторского произвола
<#0>

 

БМВ

Модератор

Сообщений: 21376
Регистрация: 28.12.2016

Excel 2013, 2016

#28

25.03.2021 17:40:09

Цитата
vikttur написал:
Каждому овощу свой фрукт

ты там на кого ботву крошишь????  :D

Цитата
Jack Famous написал:
согласен  

а вас попрошу заняться

покрасочными работами  

:D

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

Цитата
vikttur написал:
ЕСЛИОШИБКА тоже может

но все ж если тему перенаправить в русло  — Какие Excel функции рабочего листа, могут генерить диапазон, то IF подобные отпадут.

Изменено: БМВ25.03.2021 19:45:38

По вопросам из тем форума, личку не читаю.

 

Евгений Смирнов

Пользователь

Сообщений: 539
Регистрация: 18.02.2021

#29

25.03.2021 17:56:35

Цитата
Какие Excel функции рабочего листа, могут генерить диапазон, то IF подобные отпадут.

+ Выбор. Она схожа с если

 

msi2102

Пользователь

Сообщений: 3134
Регистрация: 31.03.2014

#30

25.03.2021 18:10:51

Цитата
buchlotnik написал: ну и очень зря — если есть штатная

На 100% согласен, только всё равно мозги идут по пути наименьшего сопротивления.  

Изменено: msi210226.03.2021 07:03:40

You can also return a Variant() which represents an array of values. Here is an example for a function that reverses values from a range into a new range:

Public Function ReverseValues(ByRef r_values As Range) As Variant()
    Dim i As Integer, j As Integer, N As Integer, M As Integer
    Dim y() As Variant
    N = r_values.Rows.Count
    M = r_values.Columns.Count
    y = r_values.value    'copy values from sheet into an array
    'y now is a Variant(1 to N, 1 to M) 
    Dim t as Variant
    For i = 1 To N / 2
        For j = 1 To M
            t = y(i, j)
            y(i, j) = y(N - i + 1, j)
            y(N - i + 1, j) = t
        Next j
    Next i

    ReverseValues = y
End Function

In the worksheet you have to apply this function as an array formula (with CtrlShiftEnter) with an appropriate number of cells selected. The details of the Swap() function are not important here.

Note that for many rows, this is very efficient. Doing the x = Range.Value and Range.Value = x operations when x is an array and the range contains multiple rows columns is many times faster than doing the operations one by one directly on the cells.

Понравилась статья? Поделить с друзьями:
  • Excel функция внутри ячейки
  • Excel функции если или два значения
  • Excel функция в этой же ячейке
  • Excel функции если значение ошибка то
  • Excel функция в одну строку