Какая функция позволяет получить текущий номер строки и имя текущего столбца для ячейки в Excel?
решение1
Для этого можно использовать функции ROW
и COLUMN
. Если вы опустите аргумент для этих формул, будет использоваться текущая ячейка. Их можно использовать напрямую сфункцияOFFSET
или любая другая функция, в которой можно указать как строку, так и столбец в качестве числовых значений.
Например, если ввести значение =ROW()
в ячейку D8, будет возвращено значение 8. Если ввести значение =COLUMN()
в ту же ячейку, будет возвращено значение 4.
Если вам нужна буква столбца, вы можете использовать функцию CHAR
. Я не рекомендую использовать буквы для представления столбца, так как все становится сложнее при переходе к двухбуквенным именам столбцов (где простое использование цифр в любом случае более логично).
Независимо от этого, если вы все равно хотите получить букву столбца, вы можете просто добавить 64 к номеру столбца (64 на один символ меньше, чем A
), так что в предыдущем примере, если вы установите значение ячейки в =CHAR(COLUMN()+64)
, возвращаемое значение будет D
. Если вы хотите, чтобы значение ячейки было самим местоположением ячейки, полная формула будет =CHAR(COLUMN()+64) & ROW()
.
Просто для информации, я получил 64 из таблицы ASCII. Вы также можете использовать формулу CODE
, поэтому обновленная формула с ее использованием будет =CHAR(COLUMN() + CODE("A") - 1)
. Вам нужно вычесть 1, поскольку минимальное значение COLUMN
всегда равно 1, и тогда минимальное возвращаемое значение всей формулы будет B
.
Однако это не будет работать с двухбуквенными столбцами. В этом случае вам понадобится следующая формула для правильного анализа двухбуквенных столбцов:
=IF(COLUMN()>26,IF(RIGHT(CHAR(IF(MOD(COLUMN()-1,26)=0,1,MOD(COLUMN()-1,26))+64),1)="Y",CHAR(INT((COLUMN()-1)/26)+64) & "Z",CHAR(INT((COLUMN()-1)/26)+64) & CHAR(IF(MOD(COLUMN(),26)=0,1,MOD(COLUMN(),26))+64)),CHAR(COLUMN()+64))&ROW()
Я не уверен, есть ли более простой способ сделать это или нет, но я знаю, что это работает от ячейки A1
до ZZ99
без проблем. Однако это иллюстрирует, почему лучше избегать использования идентификаторов столбцов на основе букв и придерживаться чисто числовых формул (например, использовать номер столбца вместо буквы с OFFSET
).
решение2
Попробуйте следующую функцию:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
Объяснение: ADDRESS(row_num, column_num, [abs_num])
. [abs_num] = 4
= относительный адрес. Это означает, что в возвращаемом значении нет '$'. Для столбца 'AB' вернет ADDRESS
'AB1'. Заменитель удалит '1'.
решение3
Попробуй это
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Это даст вам точный заголовок столбца, без всяких $ и т.п.
решение4
Чтобы получить имя столбца, я использовал следующие формулы.
Для конкретной ячейки:
=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")
Для текущей ячейки:
=SUBSTITUTE(CELL("address"),"$" & ROW(),"")
Попробуйте этот вариант. Он работает с 3-буквенными столбцами и не оставляет "$" на переднем конце:
=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")