Какова функция для получения текущего номера строки и текущего имени столбца для ячейки в Excel?
16 ответов
Вы можете использовать функции 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
).
Попробуйте следующую функцию:
=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
Объяснение: ADDRESS(row_num, column_num, [abs_num])
. [abs_num] = 4
= относительный адрес. Это означает, что в возвращаемом значении нет $. Для столбца «AB» ADDRESS
вернет «AB1». Заменитель удаляет «1».
Попробуй это
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Это дает вам точный заголовок столбца, без каких-либо $ и т.д.
Чтобы получить имя столбца, я использовал следующие формулы.
Для конкретной ячейки:
=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")
Для текущей ячейки:
=SUBSTITUTE(CELL("address"),"$" & ROW(),"")
Попробуйте этот вариант. Он работает на трехбуквенных столбцах и не оставляет «$» на входе:
=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")
Введите это в любую ячейку:
Español:
=SI(ENTERO((COLUMNA()-1)/26)=0;"";CAR((ENTERO(COLUMNA()-1)/26)+64))&CAR(COLUMNA()-(ENTERO((COLUMNA()-1)/26)*26)+64)
Английский:
=IF(INT((COLUMN()-1)/26)=0,"",CHAR((INT(COLUMN()-1)/26)+64))&CHAR(COLUMN()-(INT((COLUMN()-1)/26)*26)+64)
Вы можете заменить column() номером строки.
Это будет работать так же
=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
Немного ручная, но меньше VBA и более простая формула:
- В строке Excel, например, ячейка A1, введите номер
=column()
- В строке ниже введите
=Address(1,A1)
- Это даст результат
$A$1
Как только значения будут скопированы, найдите и замените $
и 1
на пустое.
Другой возможный способ - использовать что-то вроде этого:
=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())
Где colid
относится к именованному диапазону, который вы создали бы в другом месте в рабочей книге, содержащей два смежных столбца с несколькими строками: первый столбец, содержащий числа от 1 до n, соответствующий числу COLUMN()
, второй, содержащий буквы A - ZZ, или много ссылок на колонки, которые вы хотите разместить. ROW()
в порядке, чтобы вернуть номер строки.
Поэтому, если бы вы скопировали указанную выше строку в ячейку A1 «MySheet2», она была бы оценена как =MySheet1!A1
, и верните найденное значение в соответствующую ячейку MySheet1
.
Это позволит вам, например, использовать MySheet1
в качестве рабочей области, удалять и повторно вставлять новые данные, в то время как любое форматирование или вычисления в MySheet2
которые ссылаются на это содержимое, продолжат корректно работать с новыми наборами данных из целевой вкладки. Рабочий лист.
Решение для польской версии Excel:
- для конкретной ячейки:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
- для текущей ячейки:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
Вот как вы можете найти заголовок столбца (то есть букву):
=RIGHT(LEFT(ADDRESS(1,COLUMN()),LEN(ADDRESS(1,COLUMN()))-2),LEN(ADDRESS(1,COLUMN()))-3)
Вот VBA, пользовательская формула, решение. Работает с 1, 2 и 3 буквенными столбцами.
Поместите следующее в модуль кода:
Function COLUMNLETTER(Optional rng As Range) As String
'Returns the Column Letter of the top left cell in rng.
If rng Is Nothing Then Set rng = Application.Caller
COLUMNLETTER = Left(rng.Address(0, 0), IIf(rng.Column > 26, IIf(rng.Column > 702, 3, 2), 1))
End Function
= COLUMNLETTER() в любой ячейке вернет букву столбца ячейки.
= COLUMNLETTER(B3) в любой ячейке вернет B.
Эта пользовательская функция прекрасно работает при создании общих формул внутри функции INDIRECT.
Следующая формула работает независимо от того, где вы ее поместили (она вернет вам имя столбца).
=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
=MID(ADDRESS(ROW(),COLUMN()),2,FIND("$",ADDRESS(ROW(),COLUMN()),2)-2)
Формула адреса работает, возвращая имя столбца и строки. Возвращенный формат всегда будет $(Column Letters)$(Row Numbers)
строк )- например, $AA$2
или $XAA$243556
Если мы знаем, что $ всегда будет встречаться в первом символе, мы можем использовать первую среднюю формулу, чтобы начать вытягивать символы после первого знака $ (то есть 2-го символа).
Затем мы находим следующий знак $ (как мы знаем, их будет только два) и мы знаем, сколько символов находится между первым и вторым знаком доллара. Остальное простое вычитание.
попробуй это:
=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)
=IF(COLUMN()>702,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),4),3),IF(COLUMN()>26,RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),3),2),RIGHT(LEFT(ADDRESS(ROW(),COLUMN()),2),1)))
попробуй это:
= IF(COLUMN()> 26, CHAR(COLUMN()/26 +64), "") & CHAR(MOD(COLUMN() - 1,26) +65) & ROW()
эта функция действует до "ZY1" или столбца = 701