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

Come ottenere il nome della colonna corrente in Excel?

Advertisement

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

Advertisement
Advertisement

Risposte (16)

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

Provare la seguente funzione:

=SUBSTITUTE(ADDRESS(1,COLUMN(),4),"1","")
``` &001 


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', l'`ADDRESS` restituirà 'AB1'. Il sostituto rimuove il '1'.
33
33
33
2011-07-28 14:38:34 +0000

A tale scopo è possibile utilizzare le funzioni ROW e COLUMN. Se si omette l'argomento per queste formule, si utilizza la cella corrente. Queste possono essere usate direttamente con la funzione OFFSET , o qualsiasi altra funzione in cui si possa specificare sia la riga che la colonna come valori numerici.

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

Se si vuole la lettera di colonna, si può usare la funzione CHAR. Sconsiglio l'uso di lettere per rappresentare la colonna, perché le cose si complicano quando si passa a nomi di colonne a due lettere (dove il solo uso di numeri è comunque più logico).

Indipendentemente da ciò, se si vuole comunque ottenere la lettera di colonna, si può semplicemente aggiungere 64 al numero di colonna (64 è un carattere in meno di A), quindi nell'esempio precedente, se si imposta il valore della cella a =CHAR(COLUMN()+64), il valore restituito sarebbe D. Se si volesse che il valore di una cella fosse la posizione della cella stessa, la formula completa sarebbe =CHAR(COLUMN()+64) & ROW().


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

Tuttavia, questo non funzionerà con colonne di due lettere. In questo 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 meno, ma so che funziona da cella A1 a ZZ99 senza problemi. Tuttavia, questo illustra il motivo per cui è meglio evitare l'uso di identificatori di colonna basati sulle lettere, e attenersi a formule puramente numeriche (ad esempio, utilizzando il numero di colonna invece della lettera con OFFSET).

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

Prova questo

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


Questo ti dà un'intestazione di colonna esatta, senza $ ecc.
2
2
2
2012-10-17 13:29:15 +0000

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

  • In una riga di Excel, ad esempio la cella A1, inserire il numero di colonna =column()
  • Nella riga sottostante, inserire =Address(1,A1)
  • Questo fornirà il risultato $A$1

  • Una volta copiati i valori, trovare e sostituire $ e 1 con il vuoto.

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

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

Per una cella particolare:

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

Per la cella attuale:

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

Provare questa variante. Funziona su colonne di 3 lettere e non lascia un “$” sul fronte:

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

Funzionerà anche questo

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

Digitare 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)
``` &001 


È possibile sostituire la colonna() con il numero di riga.
1
1
1
2012-03-18 00:18:43 +0000

Un altro modo possibile sarebbe quello di utilizzare qualcosa di simile:

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


Dove `colid` si riferisce ad una gamma _nominata_ che creereste altrove all'interno della cartella di lavoro che comprende due colonne adiacenti con più righe: la prima colonna contenente i numeri da 1 a n corrispondenti al numero `COLUMN()`, la seconda contenente le lettere A - ZZ, o comunque molti riferimenti di colonna che desiderate ospitare. L'`ROW()` va bene così com'è per restituire il numero di riga. 

Quindi, se si dovesse copiare la stringa di cui sopra nella cella A1 di 'MySheet2', la si valuterebbe come `=MySheet1!A1`, e si restituirebbe il valore trovato nella cella corrispondente di `MySheet1`. 

Questo vi permetterebbe, ad esempio, di usare `MySheet1` come area di lavoro, per cancellare e reinserire nuovi dati, mentre qualsiasi formattazione o calcolo in `MySheet2` che si riferisca a tali contenuti continuerà a funzionare correttamente con i nuovi set di dati del foglio di lavoro a schede di destinazione.
1
Advertisement
1
1
2013-10-28 05:25:56 +0000
Advertisement

Soluzione per lucidare la versione Excel:

  • per una cella particolare:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • per la cella attuale:
=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)

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

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

Poi, troviamo il segno $ successivo (come sappiamo ce ne saranno solo due) e sappiamo quanti caratteri ci sono tra il primo e il secondo segno del dollaro. Il resto è una semplice sottrazione.

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

Ecco una VBA, formula definita dall'utente, soluzione. Funziona con colonne di 1, 2, & 3 lettere.

Mettere 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 di colonna della cella. =COLUMNLETTER(B3) in qualsiasi cella restituirà B.

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

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

prova questo:

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

Ecco come si trova l'intestazione della colonna (cioè la lettera):

=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

La seguente formula funziona indipendentemente da dove la si mette (vi restituirà il nome della colonna).

=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

provare questo:

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

questa funzione efficace fino a "ZY1” o colonna=701

Advertisement

Domande correlate

6
1
13
9
10
Advertisement
Advertisement