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

Como obter o nome da coluna actual em Excel?

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

Respostas (16)

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

Experimente 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á “$‘s” no valor devolvido. Para a coluna “AB”, os ADDRESS vão devolver “AB1”. O substituto retira o “1”.

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

Pode utilizar as funções ROW e COLUMN para o fazer. Se omitir o argumento para essas fórmulas, é utilizada a célula actual. Estas podem ser usadas directamente com a função OFFSET , ou qualquer outra função onde pode especificar tanto a linha como a coluna como valores numéricos.

Por exemplo, se introduzir =ROW() na célula D8, o valor devolvido é 8. Se introduzir =COLUMN() na mesma célula, o valor devolvido é 4.

Se quiser a letra da coluna, pode usar a função CHAR. Eu não recomendo o uso de letras para representar a coluna, pois as coisas ficam complicadas quando se passa para nomes de colunas com duas letras (onde apenas usar números é mais lógico de qualquer forma).

Independentemente disso, se ainda quiser obter a letra da coluna, pode simplesmente adicionar 64 ao número da coluna (64 sendo um carácter a menos que A), por isso no exemplo anterior, se definir o valor da célula para =CHAR(COLUMN()+64), o valor devolvido seria D. Se quisesse que o valor de uma célula fosse a própria localização da célula, a fórmula completa seria =CHAR(COLUMN()+64) & ROW().


Apenas um FYI, obtive 64 de uma tabela ASCII. Você também poderia usar a fórmula CODE, então a fórmula atualizada usando isto seria =CHAR(COLUMN() + CODE("A") - 1). Tem de subtrair 1 uma vez que o valor mínimo de COLUMN é sempre 1, e então o valor mínimo de retorno de toda a fórmula seria B.

No entanto, isto não funcionará com colunas de duas letras. Nesse caso, precisa da seguinte fórmula para analisar correctamente 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 a certeza se existe uma forma mais fácil de o fazer ou não, mas sei que funciona da célula A1 para a ZZ99 sem problemas. No entanto, isto ilustra porque é melhor evitar a utilização de identificadores de coluna baseados em letras, e ficar com fórmulas puramente baseadas em números (por exemplo, utilizar o número da coluna em vez da letra com OFFSET).

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

Experimente este

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

Isto dá-lhe o título exacto da coluna, sem qualquer $, etc.

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

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

  • Numa linha do Excel, por exemplo na célula A1, introduza o número da coluna =column()
  • Na linha abaixo, introduza =Address(1,A1)
  • Isto fornecerá o resultado $A$1

Uma vez copiados os valores, encontre e substitua $ e 1 por branco.

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

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

Para uma célula em particular:

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

Para a célula actual:

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

Tente esta variação. Funciona em colunas de 3 letras, e não deixa um “$” na parte da frente:

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

Isto também irá funcionar

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

Digite-o 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)

Português :

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

Pode substituir a coluna() pelo número da linha.

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

Outra forma possível seria utilizar algo como isto:

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

Onde colid se refere a um intervalo named que você criaria noutro local dentro da pasta de trabalho, compreendendo duas colunas adjacentes com múltiplas linhas: a primeira coluna contendo os números de 1 a n correspondentes ao número COLUMN(), a segunda contendo as letras A - ZZ, ou quantas referências de coluna quiser acomodar. O ROW() está bem à esquerda como é para devolver o número da linha.

Assim, se copiar a linha acima para a célula A1 de “MySheet2”, avaliaria como =MySheet1!A1, e devolveria o valor que encontrou na célula correspondente de MySheet1.

Isto permitir-te-ia, por exemplo, utilizar MySheet1 como uma área de trabalho, apagar e reintroduzir novos dados, enquanto qualquer formatação ou cálculos em MySheet2 que se refiram a esses conteúdos continuarão a funcionar correctamente com os novos conjuntos de dados da folha de trabalho do separador de destino.

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

Solução para polir versão Excel:

  • para uma célula específica:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • para a célula actual:
=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)

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

Se soubermos que $ ocorrerá sempre no primeiro caracter, podemos usar a primeira fórmula média para começar a puxar caracteres após o primeiro sinal $ (ou seja, o segundo caracter).

Depois, encontramos o próximo sinal $ (como sabemos que só haverá dois) e sabemos quantos caracteres existem entre o primeiro e o segundo sinal $. O resto é uma simples subtracção.

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

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

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

Esta Função Definida pelo Utilizador funciona muito bem quando se criam fórmulas genéricas dentro da função INDIRECT.

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

experimente este:

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

Eis como pode encontrar o título da coluna (ou seja, a letra):

=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

A seguinte fórmula funciona independentemente do local onde a coloca (devolver-lhe-á o nome da coluna).

=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

tente:

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

esta função é eficaz até "ZY1” ou coluna=701