Como obter o nome da coluna atual no Excel?

30

Qual é a função para obter o número da linha atual e o nome da coluna atual de uma célula no Excel?

Jader Dias
fonte
1
Eu só descobri as funções LINe COLmas o problema é que eles retornam números, e eu preciso da letra da coluna para INDIRECTele.
Jader Dias 28/07
2
você pode usar a OFFSETfunção em conjunto com, ou em vez de, a INDIRECTfórmula nesse caso. Se você quiser usar strings, também atualizei minha resposta.
Breakthrough
A propósito, INDIRETO é uma função volátil, então use-a com moderação. Parece que um deslocamento pode ser uma escolha melhor aqui se você basear a referência desejada em algum cálculo de posição.
AdamV

Respostas:

33

Você pode usar as funções ROWe COLUMNpara fazer isso. Se você omitir o argumento para essas fórmulas, a célula atual será usada. Eles podem ser usados ​​diretamente com a OFFSETfunção ou qualquer outra função em que você possa especificar a linha e a coluna como valores numéricos.

Por exemplo, se você digitar =ROW()na célula D8, o valor retornado será 8. Se você digitar =COLUMN()na mesma célula, o valor retornado será 4.

Se você deseja a letra da coluna, pode usar a CHARfunção Eu não recomendo o uso de letras para representar a coluna, pois as coisas ficam complicadas ao passar para nomes de colunas com duas letras (onde apenas usar números é mais lógico).

Independentemente disso, se você ainda deseja obter a letra da coluna, basta adicionar 64 ao número da coluna (64 sendo um caractere a menos A); portanto, no exemplo anterior, se você definir o valor da célula =CHAR(COLUMN()+64), o valor retornado será D. Se você quisesse que o valor de uma célula fosse o próprio local da célula, a fórmula completa seria =CHAR(COLUMN()+64) & ROW().


Apenas um FYI, obtive 64 de uma tabela ASCII. Você também pode usar a CODEfórmula, portanto, a fórmula atualizada usando isso seria =CHAR(COLUMN() + CODE("A") - 1). Você precisa subtrair 1, pois o valor mínimo de COLUMNé sempre 1 e, em seguida, o valor de retorno mínimo de toda a fórmula seria B.

No entanto, isso não funcionará com colunas de duas letras. Nesse caso, você precisa da seguinte fórmula para analisar corretamente as colunas de duas letras:

=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()

Não tenho certeza se existe ou não uma maneira mais fácil de fazer isso, mas sei que funciona da célula A1para ZZ99sem problemas. No entanto, isso ilustra por que é melhor evitar o uso de identificadores de coluna com base em letras e seguir as fórmulas baseadas em números puros (por exemplo, usar o número da coluna em vez da letra com OFFSET).

Avanço
fonte
Ele funcionará apenas para as primeiras 26 colunas. Mas isso serve.
Jader Dias
1
@Jader Dias, é por isso que recomendo que você use OFFSET, o que permite especificar colunas como números. Independentemente disso, atualizei a resposta com uma fórmula para estendê-la para trabalhar com colunas de duas letras.
Breakthrough
2
Não sei por que essa resposta obteve tantos votos quando a resposta de Scot é MUITO melhor, exceto que ele não a explicou. Nenhuma fórmula complexa é necessária. Adicionei um comentário para explicar por que / como funciona.
Gerhard Powell
Isso funciona até que você mude para AA etc., então não funcionará.
Krystan honra
@krystanhonour use a última fórmula da minha resposta nesse caso ... # 1However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Breakthrough
34

Tente a seguinte função:

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

Explicação: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= endereço relativo. Isso significa que não há '$' no valor retornado. Para a coluna 'AB', ADDRESSretornará 'AB1'. O substituto remove o '1'.

Scot Sutton
fonte
5

Tente isto

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

Isso fornece o cabeçalho exato da coluna, sem nenhum $ etc.

gaurav aggarwal
fonte
2

Digite isso em qualquer célula:

Español :

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

Inglês :

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

Você pode substituir a coluna () pelo número da linha.

sygn
fonte
2

Para obter o nome da coluna, usei as seguintes fórmulas.

Para uma célula específica:

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

Para a célula atual:

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

Experimente esta variação. Ele funciona em colunas de três letras e não deixa um "$" no front end:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")
Vikas Madaan
fonte
2

Ligeiramente manual, mas menos VBA e uma fórmula mais simples:

  • Em uma linha do Excel, por exemplo, célula A1, insira o número da coluna =column()
  • Na linha abaixo, insira =Address(1,A1)
  • Isso fornecerá o resultado $A$1

Depois que os valores são copiados, localize e substitua $e 1por branco.

Steve
fonte
2

Isso vai funcionar também

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
edl
fonte
Você pode adicionar alguma explicação para isso.
ChrisF
1

Outra maneira possível seria usar algo como isto:

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

Onde colidse refere a um intervalo nomeado que você criaria em outro lugar da pasta de trabalho, composto por duas colunas adjacentes com várias linhas: a primeira coluna contendo os números 1 a n correspondentes ao COLUMN()número, a segunda contendo as letras A - ZZ ou, no entanto, muitas referências a colunas deseja acomodar. O valor ROW()está à esquerda, pois é para retornar o número da linha.

Portanto, se você copiar a sequência acima para a célula A1 do 'MySheet2', ela será avaliada como =MySheet1!A1e retornará o valor encontrado na célula correspondente de MySheet1.

Isso permitiria, por exemplo, usar MySheet1como uma área de trabalho, excluir e reinserir novos dados, enquanto qualquer formatação ou cálculo MySheet2referente a esse conteúdo continuará funcionando corretamente com os novos conjuntos de dados da planilha com guias de destino.

Tigre
fonte
1

Solução para polonês versão Excel:

  • para uma célula específica:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • para a célula atual:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
mla
fonte
0

Aqui está uma solução, fórmula definida pelo usuário do VBA. Funciona com colunas de 1, 2 e 3 letras.

Coloque o seguinte em um módulo de código:

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 () em qualquer célula retornará a letra da coluna da célula.
= COLUMNLETTER (B3) em qualquer célula retornará B .

Esta função definida pelo usuário funciona muito bem ao criar fórmulas genéricas dentro da função INDIRETO.

GollyJer
fonte
0
=MID(ADDRESS(ROW(),COLUMN()),2,FIND("$",ADDRESS(ROW(),COLUMN()),2)-2)

A fórmula do endereço funciona retornando o nome da coluna e da linha. O formato retornado será sempre $(Column Letters)$(Row Numbers)- por exemplo, $AA$2ou$XAA$243556

Se sabemos que $ sempre ocorrerá no primeiro caractere, podemos usar a primeira fórmula intermediária para começar a puxar os caracteres após o primeiro sinal de $ (ou seja, o segundo caractere).

Em seguida, encontramos o próximo sinal de $ (como sabemos que haverá apenas dois) e sabemos quantos caracteres existem entre o primeiro e o segundo sinal de dólar. O resto é simples subtração.

Jon
fonte
0

Veja como você pode encontrar o cabeçalho da coluna (ou seja, a letra):

=RIGHT(LEFT(ADDRESS(1,COLUMN()),LEN(ADDRESS(1,COLUMN()))-2),LEN(ADDRESS(1,COLUMN()))-3)
Hermen
fonte
0

tente isto:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)
denz
fonte
0

A fórmula a seguir funciona, não importa onde você a coloque (ela retornará o nome da coluna).

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
Excellll
fonte
-1

tente isto:

= SE (COLUNA ()> 26, CHAR (COLUNA () / 26 +64), "") & CHAR (MOD (COLUNA () - 1,26) +65) & ROW ()

esta função é válida até "ZY1" ou coluna = 701

ayus
fonte
4
Por favor, expanda esta resposta, explicando quais são essas funções.
Kevin Panko
obter o nome da coluna atual no Excel, como "A1", "B1", ... até mesmo como "AA1", "BA1", "CA1", ...
ayus
-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)))
mkltmsck
fonte