Трюк №64. Как сделать, чтобы формула ссылалась на следующие строки при копировании по столбцам
Автоматическое приращение ссылок на ячейки в Excel в большинстве случаев работает прекрасно, но иногда нужно изменить принцип работы этого средства.
Если создать ссылку на одну ячейку, например, А1, а затем скопировать ее вправо по столбцам, то в результате эта ссылка будет меняться: =В1, =С1, =D1 и т. д., но на самом деле вы хотите получить другой результат. Нужно, чтобы приращение формулы шло по строкам, а не по столбцам, то есть =А1, =А2, =А3 и т. д. К сожалению, в Excel такая возможность не предусмотрена. Но можно обойти это ограничение с помощью функции ДВССЫЛ (INDIRECT), в которую вложена функция АДРЕС (ADDRESS).
Наверное, лучший способ объяснить, как создать нужную функцию, — использовать пример с предсказуемыми результатами. В ячейках А1:А10 по порядку введите числа от 1 до 10. Выделите ячейку D1 и введите в ней следующую формулу: =INDIRECT(ADDRESS(COLUMN()-3;1), в русской версии Excel =ДВССЫЛ(АДРЕС(СТОЛБЕЦ()-3;1)). Когда вы сделаете это, в ячейке D1 должно появиться число 1. Это происходит потому, что формула ссылается на ячейку А1. Если вы скопируете эту формулу в столбец справа, то в ячейке Е1 появится число 2. Другими словами, хотя вы копируете формулу по столбцам, приращение ссылки в формуле идет по строкам.
[stextbox id=»alert»]Этот способ особенно полезен, если в электронной таблице по строкам одного столбца записаны заголовки, а вы хотите создать динамические ссылки на эти заголовки строк в других столбцах.[/stextbox]
Если продолжить копировать эту формулу вправо по столбцам, в ячейке F1 появится число 3, в ячейке G1 — число 4 и т. д. Это достаточно понятный процесс, если вы ссылаетесь только на одну ячейку. Однако часто приходится ссылаться на диапазон ячеек, который используется как аргумент функции.
Чтобы продемонстрировать, о чем идет речь, будем использовать необходимую всем функцию СУММ (SUM). Предположим, вы получили длинный список чисел, и необходимо просуммировать столбцы чисел в режиме промежуточной суммы: =SUM($A$1:$A$2). =SUM($A$1:$A$3). =SUM($A$1:$A$4), в русской версии Excel =СУММС$А$1:$А$2). =СУММ($А$1:$А$3). =СУММ($А$1:$А$4).
Возникает проблема, так как результат должен быть динамическим и распространяться по 100 столбцам всего в одной строке, а не вниз по 100 строкам в одном столбце (как это часто бывает). Конечно же, вы могли бы вручную ввести нужные функции в отдельные ячейки, но на это потребовалось бы огромное количество времени. Вместо этого можно применить тот же принцип, что и ранее, при ссылке на одну ячейку.
Заполните диапазон А1:А100 числами от 1 до 100 по порядку. В ячейку А1 введите 1, выделите ячейку А1 и, удерживая клавишу Ctrl, щелкните маркер заполнения и протащите «го вниз на 100 строк. Выделите ячейку D1 и введите следующую формулу: =SUM(INDIRECT(ADDRESS(1;1)&»:»&ADDRESS(COLUMN()-2;1))), в русской версии Excel =СУММ(ДВССЫЛ(АДРЕС(1;1)&»:»&АДРЕС(СТОЛБЕЦ()-2;1))). В результате вы получите 3 как сумму ячеек А1:А2. Скопируйте эту формулу в ячейку Е1, в результате получите б, то есть сумму ячеек А1:А3. Скопируйте ее в ячейку F1, получите 10 — сумму ячеек А1:А4.
Переменная функция СТОЛБЕЦ (COLUMN) заставляет последнюю ссылку на ячейку увеличиваться на 1 каждый раз, когда вы копируете формулу в новый столбец. Функция СТОЛБЕЦ (COLUMN) всегда возвращает номер столбца (а не букву) в ту ячейку, в которой находится, если только вы не ссылаетесь на другую ячейку. Иначе, можно было бы воспользоваться средством Excel Специальная вставка → Транспонировать (Paste Special → Transpose). Введите формулу =SUM($A$1:$A2) в ячейку В1 (обратите внимание на относительную ссылку на строку и абсолютную ссылку на столбец в ссылке $А2) и скопируйте эту формулу вниз до ячейки В100. Выделив диапазон В2:В100, скопируйте его, выделите ячейку D1 (или любую другую, справа от которой есть 100 или более столбцов) и выберите команду Специальная вставка → Транспонировать (Paste Special → Transpose). Если необходимо, можно удалить формулы в диапазоне В2:В100.