2011-07-28 14:32:58 +0000 2011-07-28 14:32:58 +0000
31
31
Advertisement

Как получить имя текущего столбца в Excel?

Advertisement

Как получить номер текущей строки и имя текущего столбца для ячейки в Excel?

Advertisement
Advertisement

Ответы (16)

34
34
34
2012-11-28 18:31:28 +0000

Попробуйте следующую функцию:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")

Пояснение: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4 = относительный адрес. Это означает, что в возвращаемом значении нет ‘$. Для столбца 'AB’, ADDRESS вернет ‘AB1’. Замена удаляет ‘1’.

33
33
33
2011-07-28 14:38:34 +0000

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

Например, если вы вводите =ROW() в ячейку D8, возвращаемое значение будет 8. Если вы вводите =COLUMN() в той же ячейке, возвращаемое значение будет 4.

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

Независимо от того, если вы все же хотите получить букву столбца, вы можете просто добавить 64 к номеру столбца (64 - это на один символ меньше, чем A), поэтому в предыдущем примере, если вы установите значение ячейки в =CHAR(COLUMN()+64), возвращаемое значение будет D. Если бы вы хотели, чтобы значение ячейки было адресом самой ячейки, то полная формула была бы =CHAR(COLUMN()+64) & ROW().

  • *

Just a FYI, я получил 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).

5
Advertisement
5
5
2012-10-16 10:40:38 +0000
Advertisement

Попробуйте этот

=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")

Это дает вам точный заголовок колонки, без каких-либо $ и т.д..

2
2
2
2012-10-17 13:29:15 +0000

Чуть-чуть вручную, но с меньшим количеством VBA и более простой формулой:

  • В строке Excel, например, в ячейке A1, введите номер столбца =column()
  • В строке ниже введите =Address(1,A1)
  • Это даст результат $A$1

  • После копирования значений найдите и замените $ и 1 на пустые.

2
Advertisement
2
2
2012-09-26 10:28:31 +0000
Advertisement

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

Для конкретной ячейки:

=SUBSTITUTE(CELL("address",H3),"$" & ROW(H3),"")

Для текущей ячейки:

=SUBSTITUTE(CELL("address"),"$" & ROW(),"")

Попробуйте эту вариацию. Она работает на 3-буквенных столбцах и не оставляет “$” на переднем конце:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")
```.
2
2
2
2012-12-14 12:14:35 +0000

Это также сработает

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
```.
2
Advertisement
2
2
2012-09-20 00:42:23 +0000
Advertisement

Введите это в любую ячейку:

Español :

=SI(ENTERO((COLUMNA()-1)/26)=0;"";CAR((ENTERO(COLUMNA()-1)/26)+64))&CAR(COLUMNA()-(ENTERO((COLUMNA()-1)/26)*26)+64)

English :

=IF(INT((COLUMN()-1)/26)=0,"",CHAR((INT(COLUMN()-1)/26)+64))&CHAR(COLUMN()-(INT((COLUMN()-1)/26)*26)+64)

Вы можете заменить столбец() на номер строки.

1
1
1
2012-03-18 00:18:43 +0000

Другой возможный способ - использовать нечто подобное:

=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())

Где colid ссылается на диапазон named, который вы создадите в другом месте рабочей книги, состоящей из двух соседних столбцов с несколькими строками: первая колонка, содержащая номера с 1 по n, соответствующие номеру COLUMN(), вторая, содержащая буквы A - ZZ, или сколько угодно ссылок на столбцы, которые вы захотите вписать в книгу. Символ ROW() можно оставить как =MySheet1!A1 и вернуть номер строки.

Так что, если скопировать вышеуказанную строку в ячейку A1 ‘MySheet2’, она будет оценена как MySheet1 и вернет значение, найденное в соответствующей ячейке MySheet1.

Это позволит вам, например, использовать MySheet2 в качестве рабочей области, удалять и вставлять новые данные, в то время как любое форматирование или вычисления в &007, которые ссылаются на это содержимое, будут продолжать корректно работать с новыми наборами данных из целевого рабочего листа с закладками.

1
Advertisement
1
1
2013-10-28 05:25:56 +0000
Advertisement

Решение для польской версии Excel:

  • для конкретной ячейки:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • для текущей ячейки:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
0
0
0
2013-02-18 17:45:01 +0000
=MID(ADDRESS(ROW(),COLUMN()),2,FIND("$",ADDRESS(ROW(),COLUMN()),2)-2)

Формула адреса работает, возвращая столбец и имя строки. Возвращаемый формат всегда будет $(Column Letters)$(Row Numbers) - например, $AA$2 или $XAA$243556

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

Затем мы находим следующий знак $ (как мы знаем, их будет только два) и знаем, сколько символов между первым и вторым знаком доллара находится между первым и вторым знаком. Остальное - простое вычитание.

0
0
0
2012-04-23 20:53:04 +0000

Вот 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.

0
0
0
2013-06-08 18:18:18 +0000

попробуйте это:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)
0
0
0
2013-05-22 14:10:46 +0000

Вот как вы можете найти заголовок колонки (т.е. букву):

=RIGHT(LEFT(ADDRESS(1,COLUMN()),LEN(ADDRESS(1,COLUMN()))-2),LEN(ADDRESS(1,COLUMN()))-3)
0
0
0
2014-05-07 19:56:32 +0000

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

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
-1
-1
-1
2013-12-31 20:49:13 +0000
=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)))
-1
-1
-1
2013-11-06 14:00:47 +0000

попробуйте:

=IF(COLUMN()>26,CHAR(COLUMN()/26 +64),“) и CHAR(MOD(COLUMN()-1,26)+65) & ROW()

эта функция действует до "ZY1” или столбца=701.

Advertisement

Похожие вопросы

6
13
9
10
9
Advertisement