Оглавление
В учебнике дается краткое введение в синтаксис функции ADDRESS и показано, как использовать ее для возврата адреса ячейки Excel и многое другое.
Чтобы создать ссылку на ячейку в Excel, можно ввести координаты столбца и строки вручную. В качестве альтернативы можно получить адрес ячейки Excel из номеров строки и столбца, переданных в функцию ADDRESS. Почти бессмысленная сама по себе, в сочетании с другими функциями эта техника может быть единственным решением в ситуациях, когда невозможно сослаться на ячейку напрямую.
Функция Excel АДРЕС - синтаксис и основные способы использования
Функция ADDRESS предназначена для получения адреса ячейки в Excel на основе указанных номеров строки и столбца. Адрес ячейки возвращается в виде текстовой строки, а не фактической ссылки.
Функция доступна во всех версиях Excel для Microsoft 365 - Excel 2007.
Синтаксис функции ADDRESS следующий:
ADDRESS(row_num, column_num, [abs_num], [a1], [sheet_text])Первые два аргумента обязательны:
row_num - номер строки для использования в ссылке на ячейку.
номер_столбца - номер столбца для построения ссылки на ячейку.
Последние три аргумента, которые определяют формат ссылки на ячейку, являются необязательными:
абс_число - тип ссылки, абсолютный или относительный. Может принимать любое из приведенных ниже чисел; по умолчанию - абсолютный.
- 1 или опущено - абсолютная ссылка на ячейку, например $A$1
- 2 - смешанная ссылка: относительный столбец и абсолютная строка, как A$1
- 3 - смешанная ссылка: абсолютный столбец и относительная строка, как $A1
- 4 - относительная ссылка на ячейку, например A1
a1 - стиль ссылки, A1 или R1C1. Если опущено, используется стиль по умолчанию A1.
- 1 или TRUE или опущено - возвращает адрес ячейки в стиле ссылок A1, где столбцы - буквы, а строки - цифры.
- 0 или FALSE - возвращает адрес ячейки в стиле ссылок R1C1, где строки и столбцы представлены числами.
текст_листа - имя рабочего листа для включения во внешнюю ссылку. Имя листа должно быть предоставлено в виде текстовой строки и заключено в кавычки, например, "Sheet2". Если опущено, имя рабочего листа не используется, а адрес по умолчанию используется для текущего листа.
Например:
=ADDRESS(1,1)
- возвращает адрес первой ячейки (т.е. ячейки на пересечении первой строки и первого столбца) в виде абсолютной ссылки на ячейку $A$1.
=АДРЕС(1,1,4)
- возвращает адрес первой ячейки в виде относительной ссылки на ячейку A1.
В следующей таблице вы найдете еще несколько типов ссылок, которые могут быть возвращены формулами ADDRESS.
Формула | Результат | Описание |
=ADDRESS(1,2) | $B$1 | Абсолютная ссылка на ячейку |
=АДРЕС(1,2,4) | B1 | Относительная ссылка на клетку |
=АДРЕС(1,2,2) | B$1 | Относительный столбец и абсолютная строка |
=АДРЕС(1,2,3) | $B1 | Абсолютный столбец и относительная строка |
=АДРЕС(1,2,1,FALSE) | R1C2 | Абсолютная ссылка в стиле R1C1 |
=АДРЕС(1,2,4,FALSE) | R[1]C[2] | Относительная ссылка в стиле R1C1 |
=ADDRESS(1,2,1,, "Sheet2") | Лист2!$B$1 | Абсолютная ссылка на другой лист |
=ADDRESS(1,2,4,, "Sheet2") | Лист2!B1 | Относительная ссылка на другой лист |
Как использовать функцию ADDRESS в Excel - примеры формул
Приведенные ниже примеры показывают, как использовать функцию ADDRESS внутри больших формул для выполнения более сложных задач.
Возвращает значение ячейки в заданной строке и столбце
Если ваша цель - получить значение из определенной ячейки на основе номеров ее строки и столбца, используйте функцию ADDRESS вместе с INDIRECT:
INDIRECT(ADDRESS(row_num, column_num))Функция ADDRESS выводит адрес ячейки в виде текста. Функция INDIRECT превращает этот текст в обычную ссылку и возвращает значение из соответствующей ячейки.
Например, чтобы получить значение ячейки на основе номера строки в E1 и номера столбца в E2, используйте эту формулу:
=INDIRECT(ADDRESS(E1,E2))
Получение адреса ячейки с наибольшим или наименьшим значением
В этом примере мы сначала найдем наибольшее и наименьшее значения в диапазоне B2:B7 с помощью функций MAX и MIN и выведем эти значения в специальные ячейки:
Клетка E2: =MAX(B2:B7)
Клетка F2: =MIN(B2:B7)
Затем мы будем использовать ADDRESS в сочетании с функцией MATCH для получения адресов ячеек.
Ячейка с максимальным значением:
=ADDRESS(MATCH(E2,B:B,0), COLUMN(B2))
Ячейка с минимальным значением:
=ADDRESS(MATCH(F2,B:B,0), COLUMN(B2))
Если вам не нужны наибольшие и наименьшие значения в отдельных ячейках, вы можете вложить функцию MAX/MIN в первый аргумент MATCH. Например:
Ячейка с наибольшим значением:
=ADDRESS(MATCH(MAX(B2:B7),B:B,0), COLUMN(B2))
Ячейка с наименьшим значением:
=ADDRESS(MATCH(MIN(B2:B7),B:B,0), COLUMN(B2))
Как работают эти формулы
Чтобы найти номер строки, используется функция MATCH(lookup_value, lookup_array, [match_type]), которая возвращает относительную позицию lookup_value в lookup_array. В нашей формуле значение lookup - это число, возвращаемое функцией MAX или MIN, а массив lookup - это весь столбец. Следовательно, относительная позиция значения lookup в массиве точно соответствует номеру строки на листе.
Чтобы найти номер столбца, используется функция COLUM. Конечно, ничто не мешает ввести номер непосредственно в формулу, но COLUMN избавляет от необходимости считать вручную, если целевой столбец находится в середине листа.
Получение буквы столбца из номера столбца
Чтобы превратить любое заданное число в букву столбца, используйте функцию ADDRESS внутри SUBSTITUTE:
ЗАМЕНИТЬ(АДРЕС(1, номер_столбца ,4), "1","")В качестве примера, давайте найдем букву столбца, соответствующую числу в A2:
=SUBSTITUTE(ADDRESS(1,A2,4), "1","")
Глядя на приведенные ниже результаты, можно сказать, что первый столбец на листе - A, что очевидно; 10-й столбец - J, 50-й столбец - AX, а 100-й столбец - CV:
Как работает эта формула
Для начала настройте функцию ADDRESS так, чтобы она возвращала относительную ссылку на первую ячейку в целевом столбце:
- Для номера строки используйте 1.
- Для номера столбца введите ссылку на ячейку, содержащую номер, A2 в нашем примере.
- Для аргумента abs_num введите 4.
В результате ADDRESS(1,A2,4) вернет A1.
Чтобы избавиться от координат строки, оберните приведенную выше формулу в функцию SUBSTITUTE и замените "1" пустой строкой (""). Готово!
Получить адрес именованного диапазона
Чтобы найти адрес именованного диапазона в Excel, сначала нужно получить ссылки на первую и последнюю ячейки, а затем соединить их вместе. Это работает немного по-разному в додинамическом Excel (2019 и старше) и динамическом массиве Excel (Office 365 и Excel 2021). Ниже приведены примеры для Excel 2019 - Excel 2007. Инструкции для Excel 365 и Excel 2021 находятся здесь.
Как получить адрес первой ячейки в диапазоне
Чтобы вернуть ссылку на первую ячейку в именованном диапазоне, используйте эту общую формулу:
ADDRESS(ROW( ассортимент ),КОЛУМН( ассортимент ))Если предположить, что диапазон называется "Продажи", то реальная формула выглядит следующим образом:
=ADDRESS(ROW(Sales), COLUMN(Sales))
И возвращает адрес верхней левой ячейки в диапазоне:
В этой формуле функции ROW и COLUMN возвращают массив всех номеров строк и столбцов в диапазоне, соответственно. На основе этих номеров функция ADDRESS строит массив адресов ячеек. Но поскольку формула вводится в одной ячейке, отображается только первый элемент массива, который соответствует первой ячейке в диапазоне.
Как получить адрес последней ячейки в диапазоне
Чтобы найти адрес последней ячейки в именованном диапазоне, используйте эту общую формулу:
ADDRESS(ROW( ассортимент )+ROWS( ассортимент )-1,КОЛУМН( ассортимент )+COLUMNS( ассортимент )-1)Примененная к нашему диапазону с именем "Продажи", формула принимает следующий вид:
=ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales)-1)
И возвращает ссылку на правую нижнюю ячейку диапазона:
Как и в предыдущем примере, функция ROW дает нам массив всех номеров рядов в диапазоне, {4;5;6;7} в нашем случае. Нам нужно "сдвинуть" эти номера на общее количество рядов минус 1, чтобы первый элемент массива стал номером последнего ряда. Чтобы найти общее количество рядов, мы используем функцию ROWS ивычесть из его результата 1: (4-1=3). Затем к каждому элементу исходного массива добавляем 3, чтобы выполнить требуемый сдвиг: {4;5;6;7} + 3 = {7;8;9;10}.
Номер столбца вычисляется аналогичным образом: {2,3,4}+3-1 = {4,5,6}
Из приведенных выше массивов номеров строк и столбцов функция ADDRESS собирает массив адресов ячеек, но возвращает только первый, соответствующий последней ячейке в диапазоне.
Того же результата можно добиться, выбирая максимальные значения из массивов номеров строк и столбцов. Однако это работает только в формуле массива, для корректного завершения которой необходимо нажать Ctrl + Shift + Enter:
=ADDRESS(MAX(ROW(Sales)), MAX(COLUMN(Sales))))
Как получить полный адрес именованного диапазона
Чтобы вернуть полный адрес именованного диапазона, достаточно скомпоновать две формулы из предыдущих примеров и вставить между ними оператор диапазона (:).
ADDRESS(ROW( ассортимент ), КОЛУМН( ассортимент )) & ":" & ADDRESS(ROW( ассортимент ) + ROWS( ассортимент )-1, КОЛУМН( ассортимент ) + COLUMNS( ассортимент )-1)Чтобы заставить его работать для нашего набора данных, мы заменим общее "range" на реальное имя диапазона "Sales":
=ADDRESS(ROW(Sales), COLUMN(Sales)) & ":" & ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales)-1)
И получить полный адрес диапазона в виде абсолютный ссылка $B$4:$D$7:
Чтобы вернуть адрес диапазона в виде относительный ссылки (без знака $, например, B4:D7), установите аргумент abs_num в обеих функциях ADDRESS равным 4:
=ADDRESS(ROW(Sales), COLUMN(Sales), 4) & ":" & ADDRESS(ROW(Sales) + ROWS(Sales)-1, COLUMN(Sales) + COLUMNS(Sales)-1, 4)
Естественно, те же изменения можно внести в отдельные формулы для первой и последней ячейки, и результат будет выглядеть примерно так:
Как получить адрес именованного диапазона в Excel 365 и Excel 2021
В отличие от традиционного поведения "одна формула - одна ячейка" в старых версиях, в новом Excel любая формула, которая потенциально может возвращать несколько значений, делает это автоматически. Такое поведение называется рассыпанием.
Например, вместо того, чтобы возвращать адрес первой ячейки, приведенная ниже формула выводит адреса каждой ячейки в именованном диапазоне:
=ADDRESS(ROW(Sales), COLUMN(Sales))
Чтобы получить адрес первая ячейка Только для этого необходимо включить неявное пересечение, которое по умолчанию включено в Excel 2019 и старше. Для этого поставьте символ @ (оператор неявного пересечения) перед именами диапазонов:
=ADDRESS(@ROW(Sales), @COLUMN(Sales))
Аналогичным образом можно исправить и другие формулы.
Чтобы получить последняя ячейка в диапазоне:
=ADDRESS(@ROW(Sales) + ROWS(Sales)-1, @COLUMN(Sales) + COLUMNS(Sales)-1)
Чтобы получить адрес именованного диапазона :
=ADDRESS(@ROW(Sales), @COLUMN(Sales)) & ":" & ADDRESS(@ROW(Sales) + ROWS(Sales)-1, @COLUMN(Sales) + COLUMNS(Sales)-1)
На приведенном ниже снимке экрана показаны результаты:
Совет. При открытии рабочего листа с формулами, созданными в более старой версии в динамическом массиве Excel, оператор неявного пересечения вставляется Excel автоматически.
Вот так можно вернуть адрес ячейки в Excel. Чтобы поближе познакомиться со всеми формулами, рассмотренными в этом уроке, вы можете скачать наш образец рабочей книги ниже. Я благодарю вас за чтение и надеюсь увидеть вас в нашем блоге на следующей неделе!
Рабочая тетрадь для тренировок для скачивания
Функция АДРЕС Excel - примеры формул (файл.xlsx)