Динамический адрес ячейки excel это

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? Одной из наиболее полезных функций проверки данных является возможность создания выпадающего списка, который позволяет выбирать значение из предварительно определенного перечня. Но как только вы начнете применять это в своих таблицах,…


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


Динамический диапазон —

это

Именованный диапазон

с изменяющимися границами. Границы диапазона изменяются в зависимости от количества значений в определенном диапазоне.

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

Выпадающий (раскрывающийся) список

,

Вложенный связанный список

и

Связанный список

.

Задача

Имеется таблица продаж по месяцам некоторых товаров (см.

Файл примера

):

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

Выпадающего списка

.

Для решения задачи нам потребуется сформировать два

динамических диапазона

: один для

Выпадающего списка

, содержащего месяцы; другой для диапазона суммирования.

Для формирования динамических диапазонов будем использовать функцию

СМЕЩ()

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

Создадим

динамический диапазон

для

Выпадающего списка

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

Выпадающий список

не должен содержать пустые строки.

Динамический диапазон

как раз и служит для решения такой задачи.

Для создания динамического диапазона:

  • на вкладке

    Формулы

    в группе

    Определенные имена

    выберите команду

    Присвоить имя

    ;
  • в поле

    Имя

    введите:

    Месяц

    ;
  • в поле

    Область

    выберите лист

    Книга

    ;
  • в поле

    Диапазон

    введите формулу

    =СМЕЩ(лист1!$B$5;;;1;СЧЁТЗ(лист1!$B$5:$I$5))
  • нажмите ОК.

Теперь подробнее. Любой диапазон в EXCEL задается координатами верхней левой и нижней правой ячейки диапазона. Исходной ячейкой, от которой отсчитывается положение нашего динамического диапазона, является ячейка

B5

. Если не заданы аргументы функции

СМЕЩ()

смещ_по_строкам,

смещ_по_столбцам

(как в нашем случае), то эта ячейка является левой верхней ячейкой диапазона. Нижняя правая ячейка диапазона определяется аргументами

высота

и

ширина

. В нашем случае значение высоты =1, а значение ширины диапазона равно результату вычисления формулы

СЧЁТЗ(лист1!$B$5:$I$5)

, т.е. 4 (в строке 5 присутствуют 4 месяца с

января

по

апрель

). Итак, адрес нижней правой ячейки нашего

динамического диапазона

определен – это

E

5

.

При заполнении таблицы данными о продажах за

май

,

июнь

и т.д., формула

СЧЁТЗ(лист1!$B$5:$I$5)

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

Выпадающий список

.

ВНИМАНИЕ! При использовании функции

СЧЕТЗ()

необходимо убедиться в отсутствии пустых ячеек! Т.е. нужно заполнять перечень месяцев без пропусков.

Теперь создадим еще один

динамический диапазон

для суммирования продаж.

Для создания

динамического диапазона

:

  • на вкладке

    Формулы

    в группе

    Определенные имена

    выберите команду

    Присвоить имя

    ;
  • в поле

    Имя

    введите:

    Продажи_за_месяц

    ;
  • в поле

    Диапазон

    введите формулу =

    СМЕЩ(лист1!$A$6;;ПОИСКПОЗ(лист1!$C$1;лист1!$B$5:$I$5;0);12)
  • нажмите ОК.

Теперь подробнее.

Функция

ПОИСКПОЗ()

ищет в строке 5 (перечень месяцев) выбранный пользователем месяц (ячейка

С1

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

А6

), высота диапазона не меняется и всегда равна 12 (при желании ее также можно сделать также динамической – зависящей от количества товаров в диапазоне).

И наконец, записав в ячейке

С2

формулу =

СУММ(Продажи_за_месяц)

получим сумму продаж в выбранном месяце.

Например, в мае.

Или, например, в апреле.


Примечание:

Вместо формулы с функцией

СМЕЩ()

для подсчета заполненных месяцев можно использовать формулу с функцией

ИНДЕКС()

: =

$B$5:ИНДЕКС(B5:I5;СЧЁТЗ($B$5:$I$5))

Формула подсчитывает количество элементов в строке 5 (функция

СЧЁТЗ()

) и определяет ссылку на последний элемент в строке (функция

ИНДЕКС()

), тем самым возвращает ссылку на диапазон

B5:E5

.

Визуальное отображение динамического диапазона

Выделить текущий

динамический диапазон

можно с помощью

Условного форматирования

. В

файле примера

для ячеек диапазона

B6:I14

применено правило

Условного форматирования

с формулой: =

СТОЛБЕЦ(B6)=СТОЛБЕЦ(Продажи_за_месяц)

Условное форматирование

автоматически выделяет серым цветом продажи

текущего месяца

, выбранного с помощью

Выпадающего списка

.

Применение динамического диапазона

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

динамического диапазона

, например, можно посмотреть в статьях

Динамические диаграммы. Часть5: график с Прокруткой и Масштабированием

и

Динамические диаграммы. Часть4: Выборка данных из определенного диапазона

.

Динамический диапазон с автоподстройкой размеров

Есть ли у вас таблицы с данными в Excel, размеры которых могут изменяться, т.е. количество строк (столбцов) может увеличиваться или уменьшаться в процессе работы? Если размеры таблицы «плавают», то придется постоянно мониторить этот момент и подправлять:

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

Все это в сумме не даст вам скучать ;)

Гораздо удобнее и правильнее будет создать динамический «резиновый» диапазон, который автоматически будет подстраиваться в размерах под реальное количество строк-столбцов данных. Чтобы реализовать такое, есть несколько способов.

Способ 1. Умная таблица

Выделите ваш диапазон ячеек и выберите на вкладке Главная – Форматировать как Таблицу (Home – Format as Table):

dynamic_range1.png

Если вам не нужен полосатый дизайн, который добавляется к таблице побочным эффектом, то его можно отключить на появившейся вкладке Конструктор (Design). Каждая созданная таким образом таблица получает имя, которое можно заменить на более удобное там же на вкладке Конструктор (Design) в поле Имя таблицы (Table Name).

dynamic_range3.png

Теперь можно использовать динамические ссылки на нашу «умную таблицу»:

  • Таблица1 – ссылка на всю таблицу кроме строки заголовка (A2:D5)
  • Таблица1[#Все] – ссылка на всю таблицу целиком (A1:D5)
  • Таблица1[Питер] – ссылка на диапазон-столбец без первой ячейки-заголовка (C2:C5)
  • Таблица1[#Заголовки] – ссылка на «шапку» с названиями столбцов (A1:D1)

Такие ссылки замечательно работают в формулах, например:

=СУММ(Таблица1[Москва]) – вычисление суммы по столбцу «Москва»

или

=ВПР(F5;Таблица1;3;0) – поиск в таблице месяца из ячейки F5 и выдача питерской суммы по нему (что такое ВПР?)

Такие ссылки можно успешно использовать при создании сводных таблиц, выбрав на вкладке Вставка – Сводная таблица (Insert – Pivot Table) и введя имя умной таблицы в качестве источника данных:

dynamic_range4.png

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

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

dynamic_range5.png

Т.е. ссылка на умную таблицу в виде текстовой строки (в кавычках!) превращается в полноценную ссылку, а уж ее выпадающий список нормально воспринимает.

Способ 2. Динамический именованный диапазон

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

dynamic_range6.png

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

Нам потребуются две встроенных функции Excel, имеющиеся в любой версии – ПОИКСПОЗ (MATCH) для определения последней ячейки диапазона и ИНДЕКС (INDEX) для создания динамической ссылки.

Ищем последнюю ячейку с помощью ПОИСКПОЗ

ПОИСКПОЗ(искомое_значение;диапазон;тип_сопоставления) – функция, которая ищет заданное значение в диапазоне (строке или столбце) и выдает порядковый номер ячейки, где оно было найдено. Например, формула ПОИСКПОЗ(“март”;A1:A5;0) выдаст в качестве результата число 4, т.к. слово «март» расположено в четвертой по счету ячейке в столбце A1:A5. Последний аргумент функции Тип_сопоставления = 0 означает, что мы ведем поиск точного соответствия. Если этот аргумент не указать, то функция переключится в режим поиска ближайшего наименьшего значения – это как раз и можно успешно использовать для нахождения последней занятой ячейки в нашем массиве.

Суть трюка проста. ПОИСКПОЗ перебирает в поиске ячейки в диапазоне сверху-вниз и, по идее, должна остановиться, когда найдет ближайшее наименьшее значение к заданному. Если указать в качестве искомого значение заведомо больше, чем любое имеющееся в таблице, то ПОИСКПОЗ дойдет до самого конца таблицы, ничего не найдет и выдаст порядковый номер последней заполненной ячейки. А нам это и нужно!

Если в нашем массиве только числа, то можно в качестве искомого значения указать число, которое заведомо больше любого из имеющихся в таблице:

dynamic_range7.png

Для гарантии можно использовать число 9E+307 (9 умножить на 10 в 307 степени, т.е. 9 с 307 нулями) – максимальное число, с которым в принципе может работать Excel.

Если же в нашем столбце текстовые значения, то в качестве эквивалента максимально большого числа можно вставить конструкцию ПОВТОР(“я”;255) – текстовую строку, состоящую из 255 букв «я» — последней буквы алфавита. Поскольку при поиске Excel, фактически, сравнивает коды символов, то любой текст в нашей таблице будет технически «меньше» такой длинной «яяяяя….я» строки:

dynamic_range8.png

Формируем ссылку с помощью ИНДЕКС

Теперь, когда мы знаем позицию последнего непустого элемента в таблице, осталось сформировать ссылку на весь наш диапазон. Для этого используем функцию:

ИНДЕКС(диапазон; номер_строки; номер_столбца)

Она выдает содержимое ячейки из диапазона по номеру строки и столбца, т.е. например функция =ИНДЕКС(A1:D5;3;4) по нашей таблице с городами и месяцами из предыдущего способа выдаст 1240 – содержимое из 3-й строки и 4-го столбца, т.е. ячейки D3. Если столбец всего один, то его номер можно не указывать, т.е. формула ИНДЕКС(A2:A6;3) выдаст «Самару» на последнем скриншоте.

Причем есть один не совсем очевидный нюанс: если ИНДЕКС не просто введена в ячейку после знака =, как обычно, а используется как финальная часть ссылки на диапазон после двоеточия, то выдает она уже не содержимое ячейки, а ее адрес! Таким образом формула вида $A$2:ИНДЕКС($A$2:$A$100;3) даст на выходе уже ссылку на диапазон A2:A4.

И вот тут в дело вступает функция ПОИСКПОЗ, которую мы вставляем внутрь ИНДЕКС, чтобы динамически определить конец списка:

=$A$2:ИНДЕКС($A$2:$A$100; ПОИСКПОЗ(ПОВТОР(«я»;255);A2:A100))

Создаем именованный диапазон

Осталось упаковать все это в единое целое. Откройте вкладку Формулы (Formulas) и нажмите кнопку Диспетчер Имен (Name Manager). В открывшемся окне нажмите кнопку Создать (New), введите имя нашего диапазона и формулу в поле Диапазон (Reference):

Динамический именованный диапазон

Осталось нажать на ОК и готовый диапазон можно использовать в любых формулах, выпадающих списках или диаграммах.

Ссылки по теме

  • Использование функции ВПР (VLOOKUP) для связывания таблиц и подстановки значений
  • Как создать автоматически наполняющийся выпадающий список
  • Как создать сводную таблицу для анализа большого массива данных
 =СУММ(СМЕЩ($A$1;B1*10;;10;1))

Ищем начало диапазона — смещаем ссылку с A1 вниз на B1*10. По столбцам смещения нет, задаем размер диапазона — 10 строк, 1 столбец. Суммируем значения полученного диапазона.

Формула простая, короткая и понятная, но имеет один большой недостаток. Функция СМЕЩ — одна из немногих летучих (volatile) — пересчитывается не только при изменении входных данных, но и при любых изменениях на листе, а это может стать причиной торможения вычислений.

Вариант немного сложнее, но лучше.

=СУММ(ИНДЕКС(A:A;B1*10+1):ИНДЕКС(A:A;B1*10+10))

Две функции указывают на начало и конец диапазона: со строки B1*10+1 до строки B1*10+10.

Такая формула частично летуча — она пересчитывается только при открытии книги (для определения динамического диапазона). В открытой книге пересчет происходит только при изменении входных данных.

Это глава из книги: Майкл Гирвин. Ctrl+Shift+Enter. Освоение формул массива в Excel.

Предыдущая глава                            Оглавление                              Следующая глава

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

На рис. 13.1 и 13.2 приведен пример расширения исходного набора данных. Если вы используете динамический диапазон внутри функции СУММ, диапазон A2:A4 будет автоматически расширяться до А2:А5, если новое число (в ячейке А5) добавляется к исходным данным.

Рис. 13.1. Функция СУММ для диапазона А2,A4

Рис. 13.1. Функция СУММ для диапазона А2:А4

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

Рис. 13.2. Динамический диапазон внутри функции СУММ

Рис. 13.2. Динамический диапазон внутри функции СУММ должен автоматически расширяться с А2:А4 до А2:А5 при добавлении новых данных

Рис. 13.3 демонстрирует еще один пример, в котором без динамического диапазона также не обойтись. Вам нужна формула в аргументе диапазон функции СЧЁТЕСЛИ, чтобы этот диапазон обращался только к рейтингам одного семестра. В ячейке C5, вам нужно, чтобы функция СЧЁТЕСЛИ подсчитывала данные из диапазона B2:B5. А при копировании формулы вниз, С6 оставлась пустой, а в C7, функция обращалась к диапазону B6:B7.

Рис. 13.3. Формула для расчета довольно простая

Рис. 13.3. Формула для расчета довольно простая (Е5 и Е7), однако скопировтаь ее вдоль столбца не получится, так как аргумент диапазон функции СЧЁТЕСЛИ должен изменяться, чтобы охватывать только значения одного семестра. Этот пример будет завершен в конце заметки

Вы можете использовать функцию ИНДЕКС или функцию СМЕЩ для создания динамических диапазонов. Я, как правило, использую функцию ИНДЕКС, и реже СМЕЩ, потому что СМЕЩ является летучей функцией.

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

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

Ранее мы уже обсуждали летучую функцию ДВССЫЛ. Также летучими являются: ЯЧЕЙКА, СЛЧИС, ИНФОРМАЦИЯ, ТДАТА, СЕГОДНЯ. [1] Если скорость пересчета не является проблемой (у вас небольшой набор данных, не много формул, или вас это не волнует), летучая функция СМЕЩ также отлично подойдет для создания динамического диапазона. [2]

Создание динамических диапазонов с помощью опции Таблица. Если вы выбрали диапазон и конвертировали его в таблицу (нажав Ctrl+T), то последующее добавление данных автоматически расширит диапазон Таблицы. В некторых случаях этого будет вполне достаточно для управления изменяющимися данными. Однако, Таблицы имеют ряд ограничений:

  • Динамический диапазон, подобный показанному на рис. 13.3 не может быть создан с помощью опции Таблица.
  • Заголовки Таблиц не могут содержать формулы.
  • Таблицы не поддерживают функции ПРОМЕЖУТОЧНЫЕ.ИТОГИ.
  • Вы не можете применить пользовательские представления (custom views) в Таблице. [3]

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

=ИНДЕКС(массив,номер_строки,номер_столбца)

Обычно, вы выполняете поиск в двумерном диапазоне, помещая этот диапазон в аргумент массив. Например, формула =ИНДЕКС(B4:E15;2;3) вернет значение, хранящееся в ячейке D5, находящейся на пересечении второй строки и третьего столбца в массиве B4:E15. Если ваша цель – получить весь столбец а не ячейку на пересечении строки и столбца, вы вводите ноль или оставляете пустым аргумент номер_строки, и вводите требуемое значение в аргумент номер_столбца. Оставив аргумент номер_строки пустой (или введя ноль), вы говорите «получить все строки» в выбранном столбце. Поскольку в этом случае функция ИНДЕКС вернет массив значений, прежде чем ее ввести выберите соответствующее число ячеек и введите функцию, нажав Ctrl+Alt+Enter. Например, формула {=ИНДЕКС(B4:E15;;3)} вернет 12 значений.

Если вашей целью является получение всей строки, просто опустите аргумент номер_столбца (он является необязательным). Оставив аргумент номер_столбца пустым (или введя ноль), вы говорите «получить все столбцы» в выбранной строке. Рис. 13.4 и 13.5 иллюстрируют формулы для выборки целой строки или целого столбца. Поскольку цель – суммировать все значения, относящиеся к одному месяцу, функция ИНДЕКС помещается в качестве аргумента внутрь функции СУММ.

Рис. 13.4. Функция ИНДЕКС

Рис. 13.4. Если в качестве условяи выбран Фев, ИНДЕКС просматривает столбец В3:В6 или строку В10:Е10

Рис. 13.5. Функция ИНДЕКС для марта

Рис. 13.5. Если в качестве условяи выбран Мар, ИНДЕКС просматривает столбец С3:С6 или строку В11:Е11

Функции массива, использующие массив, возвращаемый функцией ИНДЕКС (в примерах 13.4 и 13.5 это СУММ), не требуют нажатия Ctrl+Shift+Enter. Есть, правда, два исключения:

  • Если вы помещаете в формулу прямой оператор массива, который требует Ctrl+Shift+Enter, то вам нужно использовать Ctrl+Shift+Enter.
  • Если вы хотите, чтобы функция вернула несколько значений в несколько ячеек, вы должны использовать Ctrl+Shift+Enter.

Прежде чем создавать формулу динамического диапазона, выясните:

  • Будет ли он вертикальным, горизонтальным или двумерным?
  • Являются ли исходные данными числовыми, текстовыми, или смешанными?
  • Есть ли пустые ячейки?

Ответы на эти вопросы определяют, какой формулой вы могли бы воспользоваться. Часто вы должны будете использовать концепцию «поиска последнего вхождения». Ниже мы рассмотрим различные формулы для определения последней строки исходных данных.

На рис. 13.6 представлены четыре столбца с различными типами данных: диапазон A5:A10 содержит смешанные данные без пустых ячеек до последней строки; диапазон А16:А21 содержит смешанные данные и пустую ячейку посреди массива; диапазон C5:C10 содержит числовые данные с пустыми ячейками до последнего элемента, диапазон C16:C21, содержит текстовые данные с пустыми ячейками до последнего элемента.

Рис. 13.6. Поиск последней позиции для данных различного формата

Рис. 13.6. Поиск последней позиции для данных различного формата

Во всех четырех случаях для того, чтобы создать динамический диапазон на основе формулы, которая будет расширяться и сжиматься, когда вы добавляете или удаляете данные, вам потребуется определить последнюю значимую относительную позицию в столбце. (Обратите внимание, что выражение «последняя строка в наборе данных» является неточным. Я говорю: «последняя значимая относительная позиция». Применительно к диапазону A5:A10 на рис. 13.6 следует сказать не строка 9, а позиция 5.)

Ключевая концепция для формул [2]–[6] состоит в том, что вам следует выбрать искомое_значение заведомо большим, чем любое возможное значение в диапазоне, а также выбрать тип_сопоставления – приблизительное (третий аргумент = 1 или опущен). В этом случае функция вернет номер последней значимой позиции в списке, даже если есть пустые ячейки.

Давайте рассмотрим работу этих формул подробнее.

Формула [1] =СЧЁТЗ(A5:A10)

  • Эта формула вернет последнюю относительную позицию в диапазоне, не имеющем пустых ячеек. Функция СЧЁТЗ подсчитывает непустые ячейки в диапазоне. Формула обработает данные любого типа, даже текстовую строку нулевой длины.
  • Если же где-то в середине диапазона есть пустая ячейка, этот метод не даст правильный ответ.

Формула [2] {=ПОИСКПОЗ(2;1/(A16:A21<>""))}

  • Эта формула пригодна для смешанных данных, когда есть пустые ячейки до последнего элемента.
  • Оператор массива в аргументе просматриваемый_масив функции ПОИСКПОЗ работает следующим образом: 1/(A16:A21<>"") → 1/{#ДЕЛ/0!:ИСТИНА:ЛОЖЬ:ИСТИНА:ИСТИНА: ЛОЖЬ} → {#ДЕЛ/0!:1:#ДЕЛ/0!:1:1:#ДЕЛ/0!}
  • Поскольку число 2 больше, чем любое значение в вышеприведенном результирующем массиве, приблизительное совпадение выбирает последнее значимое число (1) и вовращает его позицию (5).
  • Формула требует Ctrl+Shift+Enter, потому аргумент просматриваемый_масив функции ПОИСКПОЗ не был запрограммирован для обработки операций с массивами.
  • К сожалению, формула вернет ошибочное значение, если последним значением в диапазоне будет текстовая строка нулевой длины или значение ошибки.

Формула [3] =ПОИСКПОЗ(9,99E+307;C5:C10)

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

Формула [4] =ПОИСКПОЗ(100;C5:C10)

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

Формуле [5] =ПОИСКПОЗ("Ω";C16:C21)

  • Эта формула пригодна для текстовых данных. Она является примером концепции «большой текст». Если вы дадите аргументу искомое_значение формулы ПОИСКПОЗ значение, которое заведомо «больше» любого значения в диапазоне просматриваемый_масив, она всегда вернет относительную позицию последней значимой ячейки в диапазоне. Здесь Ω – последняя буква греческого алфавита (Омега). [4]
  • Эта формула работает на данных любого типа, даже для текстовой строки нулевой длины.

Формуле [6] =ПОИСКПОЗ(ПОВТОР("z";255);C16:C21)

  • Эта формула пригодна для текстовых данных. Подобно формуле [5], она использует концепцию «большого текста». В качестве аргумента искомое_значение используется повтор буквы z 255 раз. Зачем так много? На всякий случай)) Эта формула не обнаружит ячейки, содержащие Омегу, но посчитают текстовые строки нулевой длины внутри диапазона.

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

Рис. 13.7. Последняя значимая позиция в строке – четвертая

Рис. 13.7. Последняя значимая позиция в строке – четвертая

Совместное использование функций ИНДЕКС и ПОИСКПОЗ позволяет получать значение последнего элемента в диапазоне (рис. 13.8 и 13.9). На рис. 13.8 одно значение (Е2) возвращает последнее число, а другое (Е4) – идентификатор (ID) последней строки. На рис. 13.9 просто добавлено еще две строки данных.

Рис. 13.8. Формула ищет последние значения в столбцах А и С для четырех строк исходных данных

Рис. 13.8. Формула ищет последние значения в столбцах А и С для четырех строк исходных данных

Рис. 13.9. Если в исходные данные добвать еще две строки, формулы вернут правильные значения

Рис. 13.9. Если в исходные данные добвать еще две строки, формулы вернут правильные значения

Используя функции ИНДЕКС и ПОИСКПОЗ можно создавать динамические диапазоны, которые расширяются и сокращаются при изменении объема исходных данных. Как показано на рис. 13.10, в ячейке E2 у вас раскрывающийся список на основе текстовых элементов диапазона $A$2:$A$5, а в ячейке F2 формула на основе ВПР, которая обращается к диапазону $A$2:$C$5 (аргумент таблица функции ВПР).

Рис. 13.10. Раскрывающийся список и функция ВПР

Рис. 13.10. Раскрывающийся список и функция ВПР

Проблема с этой формулой заключается в том, что при добавлении строк исходных данных, ни раскрывающийся список, ни аргумент таблица функции ВПР, не будут обновляться. Если вы добавляете новую запись, вы бы хотели, чтобы аргумент таблица изменился с $A$2:$C$5 на $A$2:$C$6. Обратите внимание, что оба диапазона в качестве начальной ссылаются на одну и туже ячейку – $A$2. Вот если бы существовал способ получить ссылку на последнюю ячейку в диапазоне после добавления или удаления записи! И такой способ есть! Используйте только что изученную комбинацию функций ИНДЕКС и ПОИСКПОЗ.

Вы можете создать динамический диапазон, поместив функцию ИНДЕКС в саму ссылку в качестве второй составляющей. Например, $A$2 и $C$5 по отдельности просто ссылки на ячейки. Однако, если вы поместите двоеточие между ними ($A$2:$C$5), они становятся началом и окончанием ссылки на диапазон ячеек. Статический диапазон выглядит так: $A$2:$C$5. Динамический диапазон, так $A$2:ИНДЕКС($C$2:$C$8;ПОИСКПОЗ(9,99E+307;$C$2:$C$8)). Поскольку функция ИНДЕКС находится за двоеточием и началом ссылки на диапазон, она больше не будет извлекать последний элемент в массиве; а вернет адрес ячейки (ссылку на ячейку) последнего элемента в диапазоне. Фантастика, но контекст изменил работу функции! Сама по себе функция ИНДЕКС возвращает содержимое ячейки. Функция ИНДЕКС, как элемент ссылки на диапазон, возвращает ссылку на ячейку (адрес). Чтобы увидеть, как это работает, создайте формулу, как в ячейке E2 на рис. 13.11.

Рис. 13.11. Контекст меняет все

Рис. 13.11. Контекст меняет все: функция ИНДЕКС возвращает ссылку на ячейку, потому что она находится за двоеточием и началом ссылки на диапазон

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

  • Рис. 13.12. Выделите полностью функцию ИНДЕКС.
  • Рис. 13.13. Нажмите F9, и вы увидите, что функция просто возвращает значение последнего элемента. Это еще раз показывает, что обычно ИНДЕКС возвращает содержимое ячейки. Отменить расчет, нажав Ctrl+Z.
  • Рис. 13.14. Выделите всю формулу и нажмите F9. Поскольку функция ИНДЕКС помещена в контекст ссылки, теперь формула возвращает весь диапазон в синтаксисе массива.
  • Рис. 13.15. Введите формулу с помощью Ctrl+Shift+Enter. Помните, что это массив из многих элементов, следовательно, формула, введенная в одну ячейку не может отобразить более одного элемента одновременно. Отображается только первый элемент массива.
  • Рис. 13.16. Выполните вычисление формулы, перейдя на вкладку Формулы → область Зависимости формулВычислить формулы (или, удерживая Alt, нажмите последовательно Л, Ч). Откроется окно Вычисление формулы, и вы увидите, что ИНДЕКС возвращает ссылку на ячейку $C$5.

Рис. 13.12. Выделяя полностью функцию ИНДЕКС со всем ее содержимым

Рис. 13.12. Выделяя полностью функцию ИНДЕКС со всем ее содержимым

Рис. 13.13. Функция ИНДЕКС сама по себе возвращает содержимое последнего элемента

Рис. 13.13. Функция ИНДЕКС сама по себе возвращает содержимое последнего элемента

Рис. 13.14. Выделение начальной ссылки, двоеточия и ИНДЕКС возвращает весь диапазон

Рис. 13.14. Выделение начальной ссылки, двоеточия и ИНДЕКС возвращает весь диапазон

Рис. 13.15. Хотя у вас формула массива, в одной ячейке может отражаться только один элемент

Рис. 13.15. Хотя у вас формула массива, в одной ячейке может отражаться только один элемент

Рис. 13.16. Функция ИНДЕКС в контексте ссылки на диапазон

Рис. 13.16. Функция ИНДЕКС в контексте ссылки на диапазон

Как показано на рис. 13.18–13.20, формула справляется с добавлением и удалением записей, а также с пустыми ячейками внутри диапазона.

Рис. 13.18. Динамический диапазон на основе формулы работает при добавлении записи

Рис. 13.18. Динамический диапазон на основе формулы работает при добавлении записи

Рис. 13.19. А также при удалении

Рис. 13.19. А также при удалении

Рис. 13.20. Динамический диапазон работает при наличии пустой ячейки

Рис. 19.20. Динамический диапазон работает при наличии пустой ячейки

При создании формулы динамического диапазона учтите следующее:

  • Выделите достаточное количество строк, чтобы вместить все потенциальные записи. Например, если число записей никогда не превысит 50, используйте формулу =$A$2:ИНДЕКС($C$2:$C$51;ПОИСКПОЗ(9,99E+307;$C$2:$C$51)). Если вы не можете предположить, сколько будет записей, используйте что-то типа: =$A$2:ИНДЕКС($C:$C;ПОИСКПОЗ(9,99E+307;$C:$C)).
  • Не набирайте лишние данные ниже в ячейках, относящихся к диапазону. Они ненароком могут быть засчитаны.

Присвойте динамическому диапазону имя. Формула, которую вы создали выше для динамического диапазона не может непосредственно использоваться при создании выпадающего списка. Если вы попробуете использовать ее, то получите сообщение об ошибке. Эту проблему легко обойти, если присвоить имя диапазону на основе формулы ИНДЕКС. Затем вы сможете использовать это имя для проверки данных в раскрывающемся списке.

Более того, старайтесь присваивать имя любому динамическому диапазону. В дальнейшем вы сможете использовать имя в формулах, диаграммах, сводных таблицах, коде VBA и др. Если вы присвоили имя диапазону на основе формулы, которая требует Ctrl+Shift+Enter, и затем используете имя в другой формуле, эта последняя уже не будет требовать нажатия Ctrl+Shift+Enter (подробнее см. главу 23).

Я обычно начинаю с создания формулы в ячейке, а затем копирую ее в буфер и вставляю в поле Диапазон диалогового окна Создание имени. Это намного проще, чем создавать формулу непосредственно в диалоговом окне. На рис. 13.21 показано, как можно создать формулы в ячейках Е2 и Е4, соответственно, для выпадающего списка и таблицы подстановки.

Рис. 13.21. Для начала создайте формулы динамического диапазона в ячейках Е2 и Е4

Рис. 13.21. Для начала создайте формулы динамического диапазона в ячейках Е2 и Е4

После того как вы создали формулу для раскрывающегося списка (в ячейке E4), скопируйте ее в буфер. Откройте диалоговое окно Диспетчер имен, нажав Ctrl+F3, а затем нажмите на кнопку Создать. В открывшемся окне Создание имени ведите имя без пробелов в текстовом поле Имя (рис. 13.22). Введите примечание, чтобы в последствии вспомнить, что вы, собственно говоря, создали. Вставьте из буфера формулу в поле Диапазон. Нажмите Ok.

Рис. 13.22. Присвоение имени динамическому диапазону идентификаторов

Рис. 13.22. Присвоение имени динамическому диапазону идентификаторов

Создайте раскрывающийся список. Выделите ячейку Е7. Откройте окно Проверка вводимых значений, нажав Alt а затем последовательно Ы, Ы, В, или пройдите по меню ДанныеПроверка данныхПроверка данных (рис. 13.23). Выберите тип данных Список. В поле Формула введите знак равенства и имя Список.

Рис. 13.23. Введите имя диапазона в окно Проверки вводимых значений

Рис. 13.23. Введите имя диапазона в окно Проверка вводимых значений

Теперь, когда у вас в ячейке Е7 есть раскрывающийся список на основе поименованного динамического диапазона, можно ввести формулу ВПР в ячейку F7. Можете воспользоваться примером, как на рис. 13.24, или можете создать имя для динамической таблицы подстановки и затем использовать это имя в формуле ВПР. После ввода формулы в ячейку F7, вы можете скопировать ее в ячейку G7. Обратите внимание, как оригинально задан аргумент номер_столбца.

Рис. 13.24. Аргумент таблица функции ВПР содержит формулу динамического диапазона

Рис. 13.24. Аргумент таблица функции ВПР содержит формулу динамического диапазона

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

Рис. 13.25. При добавлении данных динамический диапазон работает отлично

Рис. 13.25. При добавлении данных динамический диапазон работает отлично

В некоторых случаях у вас может быть набор данных, который содержит пустую строку или в котором отсутствуют некоторые данные. При этом вы бы хотели определить динамический диапазон так, чтобы он включал в себя все значения (рис. 13.26). На рис. 13.27 приведены две формулы, которые определяют диапазон $A$2:$C$6 несмотря на пустую строку и недостающие данные.

Рис. 13.26. Отсутствующие данные могут помешать «правильно» определить динамический диапазон

Рис. 13.26. Отсутствующие данные могут помешать «правильно» определить динамический диапазон, а вы бы хотели, чтобы он включал все данные $A$2:$C$6

Рис. 13.27. Эти формулы определяет диапазон A2_C6

Рис. 13.27. Эти формулы определяет диапазон $A$2:$C$6

Давайте рассмотрим еще более необычную ситуацию. Что, если у вас могут быть ячейки, содержащие пробелы (невидимые глазу)!? Если вы не хотите включать их в динамический диапазон, добавьте функцию СЖПРОБЕЛЫ, которая удаляет все пробелы, за исключением одного пробела между словами (рис. 13.28). А как вы помните, текстовые строки нулевой длины в диапазон не включаются.

Рис. 13.28. Формула не включит в диапазон ячейки с пробелами и текстовыми строками нулевой длины

Рис. 13.28. Формула не включит в диапазон ячейки с пробелами и текстовыми строками нулевой длины

Давайте подробнее рассмотрим работу этой формулы. Формула создает динамический диапазон не включающий ячейки с пробелами и ячейки, содержащие текстовые строки нулевой длины.

Рис. 13.29

Использование функции СМЕЩ для создания динамического диапазона

Функция СМЕЩ имеет пять аргументов:

Рис. 13.29а. Функция СМЕЩ

Функция СМЕЩ говорит: сместись от отправной точки (аргумент ссылка) на столько-то строк и столбцов (смещ_по_строкам и смещ_по_столбцам), и от этой новой ячейки выбери диапазон такой-то высоты и ширины (аргументы высота и ширина). Заметьте, что функция СМЕЩ определяет диапазон. На рис 13.30 показан пример СМЕЩ, который предполагает, что в диапазоне А2:А5 могут быть только числа и не будет пустых ячеек (иначе функция СЧЁТ не справится с определением количества непустых ячеек).

Рис. 13.30. Функция СМЕЩ определяет диапазон $A$2_$A$3

Рис. 13.30. Функция СМЕЩ определяет диапазон $A$2:$A$3

Динамический диапазон начинается в ячейке $A$2 (аргумент ссылка), точка отсчета диапазона не смещается, ни по строкам, ни по столбцам (второй и третий аргументы опущены); высота диапазона 2 (именно это значение возвращает формула СЧЁТ($A$2:$A$5); ширина диапазона 1, потому что аргумент ширина также опущен. Обратите внимание, что в случае, если аргументы опущены, то смещ_по_строкам и смещ_по_столбцам принимают значение 0, а высота и ширина – значения, соответствующие ширине и высоте диапазона в аргументе ссылка (в нашем случае это одна ячейка $A$2, и следовательно, ширина и высота по умолчанию равняются 1). При этом аргументы смещ_по_строкам и смещ_по_столбцам являются обязательными, а высота и ширина – необязательными. Например, формула =СМЕЩ($A$2) вернет ошибку – Для данной функции введено слишком мало аргументов, а формула =СМЕЩ($A$2;;) вернет значение 174. Ну, и наконец, функция СМЕЩ не требует Ctrl+Shift+Enter.

Если вам нужно создать динамический диапазон как часть таблицы, какой метод предпочесть: ИНДЕКС или СМЕЩ? На рис. 13.31 приведены данные, включающие название города, инициалы и телефон представителя. Названия некоторых городов будут повторяться, потому что у вас может быть более одного представителя в каждом городе. Вы хотите создать динамический диапазон инициалов, основанный на названии города (помещенном в ячейку E2). Например, если у вас в Е2 Сиэтл, вы бы хотели извлечь диапазон $B$4:$B$6. Если у вас в ячейке E2 Сан-Франциско (SF), вы бы хотели извлечь диапазон $B$2:$B$3. Такая формула может быть использована, например, для формирования выпадающего списка, в котором вы хотите видеть инициалы представителей одного города, указанного в ячейке. На рис. 13.31 приведены три формулы, которые могут выполнить эту задачу.

Рис. 13.31. Функции СМЕЩ и Индекс для извлечения динамичсекого диапазона из таблицы

Рис. 13.31. Функции СМЕЩ и Индекс для извлечения динамичсекого диапазона из таблицы

Давайте подробнее рассмотрим работу этих формул.

Формула [1] {=СМЕЩ($B$1;ПОИСКПОЗ($E$2;$A$2:$A$6;0);;СЧЁТЕСЛИ($A$2:$A$6;$E$2))}

  • Аргумент ссылка функции СМЕЩ обозначает точку отсчета – ячейку $B$1.
  • ПОИСКПОЗ находит относительное положение Сиэтла в диапазоне A2:A6 и возвращает 3 – первое вхождение Сиэтла в таблице. Таким образом, аргумент смещ_по_строкам = 3. Начальная ячейка для извлекаемого диапазона – $B$4.
  • Аргумент смещ_по_столбцам опущен, так что остаемся в столбце В.
  • СЧЁТЕСЛИ насчитывает три Сиэтла в диапазоне A2:A6. Потому аргумент высота функции СМЕЩ = 3; динамический диапазон будет включать три строки.
  • Аргумент ширина пуст, и поэтому динамический диапазон будет такой же ширины, как и диапазон в аргументе ссылка; в нашем случае = 1.
  • Динамический диапазон определяется, как $B$4:$B$6, когда в ячейке E2 Сиэтл и $B$2:$B$3, когда – SF (проверьте!).

Формула [2] {=ИНДЕКС($B$2:$B$6;ПОИСКПОЗ($E$2;$A$2:$A$6;0)): ИНДЕКС($B$2:$B$6;ПОИСКПОЗ($E$2;$A$2:$A$6;0)+СЧЁТЕСЛИ($A$2:$A$6;$E$2)-1)}

  • Эта формула динамического диапазона использует две функции ИНДЕКС, чтобы найти начальную и конечную ссылки диапазона.
  • Первая формула ИНДЕКС($B$2:$B$6;ПОИСКПОЗ($E$2;$A$2:$A$6;0)) возвращает ссылку $B$4 (помните, что в соответствующем контексте ИНДЕКС возвращает не значение, хранящееся в ячейке, а ссылку на ячейку).
  • Формула принимает вид {=$B$4:ИНДЕКС($B$2:$B$6;ПОИСКПОЗ($E$2;$A$2:$A$6;0)+ СЧЁТЕСЛИ($A$2:$A$6;$E$2)-1)}
  • ПОИСКПОЗ($E$2;$A$2:$A$6;0)+СЧЁТЕСЛИ($A$2:$A$6;$E$2)-1 → 3 + СЧЁТЕСЛИ($A$2:$A$6;$E$2)-1 → 3 + 3 – 1 = 5
  • Формула примет вид =$B$4:ИНДЕКС($B$2:$B$6;5) → $B$4:$B$6.

Формула [3] {=ИНДЕКС($B$2:$B$6;ПОИСКПОЗ($E$2;$A$2:$A$6;0)): ИНДЕКС($B$2:$B$6;ПОИСКПОЗ(2;1/($A$2:$A$6=$E$2)))}

  • Эта формула аналогична предыдущей, за исключением того, что вместо сочетания ПОИСКПОЗ и СЧЁТЕСЛИ для определения позиции последнего вхождения Сиэтла, здесь используется оператор массива.
  • Вот этот фрагмент формулы: ИНДЕКС($B$2:$B$6;ПОИСКПОЗ(2;1/($A$2:$A$6=$E$2))).
  • ПОИСКПОЗ(2;1/($A$2:$A$6=$E$2))) → ПОИСКПОЗ(2;1/($A$2:$A$6= «Seattle»))) → ПОИСКПОЗ(2;1/({ЛОЖЬ:ЛОЖЬ:ИСТИНА:ИСТИНА:ИСТИНА})) → ПОИСКПОЗ(2;{#ДЕЛ/0!:#ДЕЛ/0!:1:1:1}) → 5
  • Формула далее примет вид =$B$4:ИНДЕКС($B$2:$B$6;5) → $B$4:$B$6.

Какую функцию (СМЕЩ или ИНДЕКС) предпочесть при создании динамических диапазонов? СМЕЩ – это летучая функция, а ИНДЕКС – нет. Если скорость расчетов в вашем конкретном случае не является критичным фактором, использование ИНДЕКС или СМЕЩ – это вопрос предпочтений. Если скорость для вас важна, используйте ИНДЕКС.

Диаграммы с использованием имен на основе формул динамического диапазона

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

  1. Создайте динамические диапазоны на основе формул.
  2. Присвойте каждому диапазону имя.
  3. Создайте диаграмму.
  4. Вставить имена в диаграмму.

Рассмотрим примеры. На рис. 13.34 цель – построить гистограмму, где по оси Х будут инициалы представителей, а по оси Y – продажи; гистограмма должна быть построена только для города, хранящегося в ячейке F1. Ячейка А8 содержит формулу динамического диапазона для продаж, а ячейка A9 – для представителей. Чтобы показать различные подходы, одна формула основана на функции СМЕЩ, а вторая – ИНДЕКС. Вы можете выбрать тот, который вам больше нравится. Вы используете динамический диапазон представителей для горизонтальной оси, и динамический диапазон продаж для вертикальной оси. Далее, вам потребуется создать два имени. На рис. 13.35 показано создание одного из них – для продаж. По аналогии создайте имя для представителей.

Рис. 13.34. Создание формулы на основе динамического диапазона

Рис. 13.34. Создание формулы на основе динамического диапазона

Рис. 13.35. Присвоение имени формуле динамического диапазона продаж

Рис. 13.35. Присвоение имени формуле динамического диапазона продаж

Создайте диаграмму на основе значений в ячейках В1:С6 (рис. 13.36).

Рис. 13.36. Диаграмма на основе значений в ячейках В1_С6

Рис. 13.36. Диаграмма на основе значений в ячейках В1:С6

Далее, вам нужно заменить диапазоны ячеек диаграммы на имена динамических диапазонов. Чтобы сделать это, щелкните правой кнопкой мыши на диаграмме, и кликните в контекстном меню на Выбрать данные, или перейдите на вкладку Работа с диаграммамиКонструктор и кликните на кнопке Выбрать данные. Далее, выделите ряд Продажи в левой части окна и щелкните на кнопку Изменить (рис. 13.37).

Рис. 13.37. Выберите ряд Продажи и кликните на кнопку Изменить

Рис. 13.37. Выберите ряд Продажи и кликните на кнопку Изменить

В открывшемся окне Изменение ряда выделите только диапазон ячеек в области Значения. Не выделяйте ссылку на лист (рис. 13.38). Удалите выделенные ячейки, и введите имя диапазона (рис. 13.39). Убедитесь, что вы не удалили восклицательный знак. Нажмите Оk.

Рис. 13.38. Выделите только диапазон ячеек в ряду Значения, не трогая название листа

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

Рис. 13.39. После удаления ссылки на ячейки введите имя диапазона

Рис. 13.39. После удаления ссылки на ячейки введите имя диапазона

Аналогичным образом введите имя Представители вместо ссылки на ячейки (рис. 13.40). Кликните на кнопку Изменить в правой части окна Выбор исчтоника данных (а); в открывшемся окне Подписи оси (б) выделите только диапазон ячеек. Не выделяйте ссылку на лист. Удалите ссылку на ячейки и введите имя диапазона Представители (в). Убедитесь, что вы не удалили восклицательный знак. Нажмите Оk.

Рис. 13.40. Кликните на кнопку Изменить в правой части окна Выбор исчтоника данных

Рис. 13.40. Введите имя Представители вместо ссылки на ячейки

Как показано на рис. 13.41, вы можете проверить как диаграмма отреагирует на изменение города в ячейке F1.

Рис. 13.41. Выбрав в ячейке F1 Сиэтл (а) или Сан-Франциско (б), диаграмма отобразит только соответствующих городу представителей

Рис. 13.41. Выбрав в ячейке F1 Сиэтл (а) или Сан-Франциско (б), диаграмма отобразит продажи только соответствующих городу представителей

Создание динамической диаграммы с помощью сводной таблицы:

  1. Создайте сводную таблицу (рис. 13.43).
  2. Вставьте срез (в Excel 2013 вкладка Работа со сводными таблицамиАнализ → область Фильтры → кнопка Вставить срез).
  3. Виберите город в срезе и нажмите Alt+F1; создастся диаграмма по умолчанию; отформатируйте ее.

Рис. 13.43. Фильтр среза сводной таблицы позволяет создать динамическую диаграмму

Рис. 13.43. Фильтр среза сводной таблицы позволяет создать динамическую диаграмму

В следующем примере динамический диапазон позволяет получать пять последних чисел столбца (рис. 13.44). Создайте динамический диапазон на основе функций ИНДЕКС и ПОИСКПОЗ. Формула [1] находит адрес последней ячейке в столбце, а адрес первой просто на 4 строки меньше. При этом формула [1] включит в суммирование ячейку А6 (пустую), как одну их пяти последних. Если вы этого не хотите, воспользуйтесь формулой [2].

Рис. 13.44. Формула суммирующая пять последних значение в столбце

Рис. 13.44. Формула суммирующая пять последних значение в столбце

Формула [2] для ввода требует Ctrl+Shift+Enter (помните козырное правило функции ЕСЛИ?). Для создания формулы, которая бы не требовала нажатия Ctrl+Shift+Enter, сохраните фрагмент с ЕСЛИ под определенным именем, а затем подставляйте это имя в большие формулы. Например, сохраните целиком аргумент функции [2] СУММ под именем ПоследниеПять (рис. 13.45). Теперь формула не потребует нажатия Ctrl+Shift+Enter.

Рис. 13.45. Создайте имя, и подставьте его в формулу; это избавит вас от нажатия Ctrl+Shift+Enter

Рис. 13.45. Создайте имя, и подставьте его в формулу; это избавит вас от нажатия Ctrl+Shift+Enter

Давайте подробнее рассмотрим работу фрагмента формулы [2]: НАИБОЛЬШИЙ(ЕСЛИ(ЕЧИСЛО($A$2:$A$10);СТРОКА($A$2:$A$10)-СТРОКА($A$2)+1);$C$2)

Этот фрагмент должен вернуть относительные позиции в массиве пяти последних чисел без учета пустых ячеек: НАИБОЛЬШИЙ(ЕСЛИ(ЕЧИСЛО($A$2:$A$10);СТРОКА($A$2:$A$10)-СТРОКА($A$2)+1); $C$2) → НАИБОЛЬШИЙ(ЕСЛИ({ИСТИНА:ИСТИНА:ИСТИНА:ИСТИНА:ЛОЖЬ: ИСТИНА:ИСТИНА:ЛОЖЬ: ЛОЖЬ};СТРОКА($A$2:$A$10)-СТРОКА($A$2)+1);$C$2) → НАИБОЛЬШИЙ({1:2:3:4:ЛОЖЬ:6:7:ЛОЖЬ: ЛОЖЬ};5) → 2. Функция ИНДЕКС затем использует этот параметр 2 для выбора адреса второго элемнета в массиве $A$2:$A$10 в качестве начальной ссылки для динамического диапазона ($A$3).

Теперь мы обладаем достаточными навыками, чтобы написать формулу (см. рис. 13.3), которую можно скопировать вдоль столбца, а не использовать несколько различных формул в заранее определенных ячейках (как это было на рис. 13.3). С помощью динамического диапазона мы можем извлечь только те значения рейтингов, которые относятся к определенному семестру и отвечают пороговому критерию (рис. 13.46). В ячейке C4 вы создали формулу, которую можно скопировать вниз, чтобы подсчитать количество ркйтингов за семестр превышающих порог в 2,5 балла. Вы можете использовать функцию СЧЁТЕСЛИ, для которой просматриваемый диапазон будет меняться в различных ячейках столбца С.

Примечание. Аргумент диапазон функции СЧЁТЕСЛИ не может обрабатывать операторы массива (см. главу 10). Но, поскольку функция ИНДЕКС возвращает не массив, а ссылку, функция СЧЁТЕСЛИ справляется со своей работой.

Рис. 13.46. Использование динамического диапазона

Рис. 13.46. Использование динамического диапазона позволяет извлечь только те значения, которые относятся к строкам после предыдущего вхождения текста в столбце А; например, в ячейке С12, анализируются только значения В10:В12, так как предыдущий текст встретился в ячейке А10

Рассмотрим подробнее работу формулы, например в ячейке C9. Вам нужен динамический диапазон, который будет включать только значения, введенные после последнего ввода текста в столбце А.

1. =ЕСЛИ(A10<>"";СЧЁТЕСЛИ(ИНДЕКС($B$3:B9;ПОИСКПОЗ("ЯЯЯ";$A$3:A9)): B9;">"&$C$1);"")

Обратите внимание, что диапазоны, первоначально введенные в формулу в ячейке С4, расширились до $B$3:B9 и $A$3:A9. Элемент формулы ПОИСКПОЗ("ЯЯЯ";$A$3:A9) возвращает относительное положение (6) в аргумент номер_строки функции ИНДЕКС, которое соответствует относительному положению текста Осень-12 в диапазоне $A$3:A9.[5]

2. =ЕСЛИ(A10<>"";СЧЁТЕСЛИ(ИНДЕКС($B$3:B9;6):B9;">"&$C$1);"")

Элемент формулы ИНДЕКС($B$3:B9;6) возвращает ссылку на ячейку B8.

3. =ЕСЛИ(A10<>"";СЧЁТЕСЛИ(В8:B9;">"&$C$1);"") → =ЕСЛИ(A10<>"",СЧЁТЕСЛИ(B8:B9,">2,5");"") → =ЕСЛИ(A10<>"";1;"")

Т.к. ячейка A10 не является пустой, ЕСЛИ возвращает значение 1. Результат работы формулы в ячейке C9 – единица.


[1] Мне встретился и более широкий список.

[3] Извините, но я не смог понять, чтобы это значило…

[4] Надо заметить, что современные шрифты на основе шестнадцатеричного Юникода обладают существенно большим набором символов, так что греческая Омега уже не является символом с самым большим кодом.

[5] Любопытно, что в оригинальном (английском) тексте использовался другой символ в качестве «большого текста» – ПОИСКПОЗ("Ω";$A$3:A9); в нашем случае эта функция возвращала ошибку, так как код любого русского символа больше кода греческой буквы Омега.

Понравилась статья? Поделить с друзьями:
  • Динамические формы в excel
  • Динамическая гиперссылка в excel на другой лист
  • Динамические таблицы в excel что это
  • Динамика цены на нефть excel
  • Динамические таблицы в excel примеры