Come ottenere il nome della colonna corrente in Excel?


30

Qual è la funzione per ottenere il numero di riga corrente e il nome della colonna corrente per una cella in Excel?


1
Ho appena scoperto le funzioni LINe COLil problema è che restituiscono numeri e ho bisogno della lettera della colonna INDIRECT.
Jader Dias,

2
in questo caso puoi usare la OFFSETfunzione insieme o al posto della INDIRECTformula. Se vuoi usare le stringhe, però, ho anche aggiornato la mia risposta.
Sfondamento

A proposito, INDIRETTO è una funzione volatile, quindi usalo con parsimonia. Sembra che OFFSET potrebbe essere una scelta migliore qui se si sta basando il riferimento desiderato su un calcolo della posizione.
AdamV,

Risposte:


33

È possibile utilizzare le funzioni ROWe COLUMNper farlo. Se si omette l'argomento per tali formule, viene utilizzata la cella corrente. Questi possono essere utilizzati direttamente con la OFFSETfunzione o qualsiasi altra funzione in cui è possibile specificare sia la riga che la colonna come valori numerici.

Ad esempio, se si immette =ROW()nella cella D8, il valore restituito è 8. Se si immette =COLUMN()nella stessa cella, il valore restituito è 4.

Se si desidera la lettera della colonna, è possibile utilizzare la CHARfunzione. Non consiglio l'uso delle lettere per rappresentare la colonna, poiché le cose si complicano quando si passa a nomi di colonne a doppia lettera (dove il solo uso dei numeri è comunque più logico).

Indipendentemente da ciò, se dovessi comunque voler ottenere la lettera di colonna, puoi semplicemente aggiungere 64 al numero di colonna (64 essendo un carattere in meno di allora A), quindi nell'esempio precedente, se imposti il ​​valore della cella su =CHAR(COLUMN()+64), il valore restituito sarebbe D. Se si desidera che il valore di una cella sia la posizione della cella stessa, sarebbe la formula completa =CHAR(COLUMN()+64) & ROW().


Solo un FYI, ho ottenuto 64 da una tabella ASCII. Puoi anche usare la CODEformula, quindi la formula aggiornata usando questa sarebbe =CHAR(COLUMN() + CODE("A") - 1). Devi sottrarre 1 poiché il valore minimo di COLUMNè sempre 1, e quindi il valore di ritorno minimo dell'intera formula sarebbe B.

Tuttavia, questo non funzionerà con colonne di due lettere. In tal caso, è necessaria la seguente formula per analizzare correttamente le colonne di due lettere:

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

Non sono sicuro che ci sia un modo più semplice per farlo o no, ma so che funziona da cellulare A1a ZZ99senza problemi. Tuttavia, questo spiega perché è meglio evitare l'uso di identificatori di colonna basati su lettere e attenersi a formule pure basate su numeri (ad esempio utilizzando il numero di colonna anziché la lettera con OFFSET).


Funzionerà solo per le prime 26 colonne. Ma questo lo farà.
Jader Dias,

1
@Jader Dias è per questo che ti consiglio di utilizzare OFFSETinvece, che ti consente di specificare le colonne come numeri. Indipendentemente da ciò, ho aggiornato la risposta con una formula per estenderla per funzionare con colonne di due lettere.
Breakthrough

2
Non so perché questa risposta abbia ottenuto così tanti voti quando la risposta di Scot è molto migliore, tranne per il fatto che non l'ha spiegata. Nessuna formula complessa necessaria. Ho aggiunto un commento per spiegare perché / come funziona.
Gerhard Powell,

Questo funziona fino a quando non si passa ad AA, quindi non funzionerà.
Krystan Honor

@krystanhonour usa l'ultima formula dalla mia risposta in quel caso ...However, this will not work with two-letter columns. In that case, you need the following formula to properly parse two-letter columns:
Breakthrough

34

Prova la seguente funzione:

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

Spiegazione: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4= indirizzo relativo. Ciò significa che non ci sono '$' nel valore restituito. Per la colonna 'AB', ADDRESSverrà restituito 'AB1'. Il sostituto rimuove '1'.


5

Prova questo

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

Questo ti dà l'intestazione di colonna esatta, senza $ ecc.


2

Digita questo in qualsiasi cella:

Español :

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

Inglese :

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

È possibile sostituire la colonna () con il numero di riga.


2

Per ottenere il nome della colonna ho usato le seguenti formule.

Per una cella particolare:

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

Per la cella corrente:

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

Prova questa variazione. Funziona su colonne di 3 lettere e non lascia un "$" sul front-end:

=SUBSTITUTE(ADDRESS(ROW(XFD123),COLUMN(XFD123),4),ROW(XFD123),"")

2

Leggermente manuale ma meno VBA e una formula più semplice:

  • In una riga di Excel, ad es. Cella A1, immettere il numero di colonna =column()
  • Nella riga in basso, inserisci =Address(1,A1)
  • Questo fornirà il risultato $A$1

Una volta copiati i valori, trova e sostituisci $e 1con spazio vuoto.


2

Funzionerà anche questo

=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)

Puoi aggiungere qualche spiegazione a questo.
ChrisF,

1

Un altro modo possibile sarebbe usare qualcosa del genere:

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

Dove si colidriferisce a un intervallo denominato che dovresti creare altrove all'interno della cartella di lavoro comprendente due colonne adiacenti con più righe: la prima colonna contenente i numeri da 1 a n corrispondenti al COLUMN()numero, la seconda contenente le lettere A - ZZ o comunque molti riferimenti a colonne desidera accogliere. La ROW()va bene a sinistra in quanto è di restituire il numero di riga.

Quindi, se dovessi copiare la stringa sopra nella cella A1 di 'MySheet2', valuterà come =MySheet1!A1, e restituirebbe il valore trovato nella cella corrispondente di MySheet1.

Ciò consentirebbe, ad esempio, di utilizzare MySheet1come area di lavoro, di eliminare e reinserire nuovi dati, mentre qualsiasi formattazione o calcolo MySheet2che faccia riferimento a tali contenuti continuerà a funzionare correttamente con i nuovi set di dati dal foglio di lavoro a schede di destinazione.


1

Soluzione per la versione polacca di Excel:

  • per una cella particolare:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • per la cella corrente:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")

0

Ecco una soluzione VBA, definita dall'utente, soluzione. Funziona con colonne da 1, 2 e 3 lettere.

Inserisci quanto segue in un modulo di codice:

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 () in qualsiasi cella restituirà la lettera della colonna della cella.
= COLUMNLETTER (B3) in una cella tornerà B .

Questa funzione definita dall'utente funziona benissimo quando si creano formule generiche all'interno della funzione INDIRETTA.


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

La formula dell'indirizzo funziona restituendo la colonna e il nome della riga. Il formato restituito sarà sempre $(Column Letters)$(Row Numbers)- ad es. $AA$2O$XAA$243556

Se sappiamo che $ si presenterà sempre al primo carattere, possiamo usare la prima formula di metà per iniziare a tirare i caratteri dopo il primo segno $ (cioè il secondo carattere).

Quindi, troviamo il prossimo simbolo $ (poiché sappiamo che ce ne saranno solo due) e sappiamo quanti caratteri ci sono tra il primo e il secondo simbolo del dollaro. Il resto è semplice sottrazione.


0

Ecco come puoi trovare l'intestazione della colonna (cioè la lettera):

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

0

prova questo:

=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)

0

La seguente formula funziona indipendentemente da dove la metti (ti restituirà il nome della colonna).

=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")

-1

prova questo:

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

questa funzione è attiva fino a "ZY1" o colonna = 701


4
Espandi questa risposta spiegando quali sono queste funzioni.
Kevin Panko,

ottenere il nome della colonna corrente in Excel, come "A1", "B1", ... anche fino a "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)))
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.