web-dev-qa-db-fra.com

Comment obtenir le nom de colonne actuel dans Excel?

Quelle est la fonction pour obtenir le numéro de ligne actuel et le nom de la colonne actuelle d'une cellule dans Excel?

27
Jader Dias

Vous pouvez utiliser les fonctions ROW et COLUMN pour le faire. Si vous omettez l'argument pour ces formules, la cellule en cours est utilisée. Celles-ci peuvent être directement utilisées avec la fonction OFFSET , ou avec toute autre fonction permettant de spécifier à la fois la ligne et la colonne sous forme de valeurs numériques.

Par exemple, si vous entrez =ROW() dans la cellule D8, la valeur renvoyée est 8. Si vous entrez =COLUMN() dans la même cellule, la valeur renvoyée est 4.

Si vous voulez la lettre de colonne, vous pouvez utiliser la fonction CHAR. Je ne recommande pas l'utilisation de lettres pour représenter la colonne, car la tâche devient compliquée lorsque vous passez à des noms de colonnes à deux lettres (l'utilisation de chiffres est de toute façon plus logique).

Quoi qu'il en soit, si vous souhaitez toujours obtenir la lettre de la colonne, vous pouvez simplement ajouter 64 au numéro de la colonne (64 correspond à un caractère inférieur à A). Ainsi, dans l'exemple précédent, si vous définissez la valeur de la cellule sur =CHAR(COLUMN()+64), la valeur renvoyée serait D. Si vous voulez que la valeur d'une cellule soit son emplacement, la formule complète serait =CHAR(COLUMN()+64) & ROW().


Juste un FYI, j'ai obtenu 64 d'une table ASCII. Vous pouvez également utiliser la formule CODE, de sorte que la formule mise à jour à l'aide de cette formule serait =CHAR(COLUMN() + CODE("A") - 1). Vous devez soustraire 1 puisque la valeur minimale de COLUMN est toujours 1, puis la valeur de retour minimale de la formule entière serait B.

Toutefois, cela ne fonctionnera pas avec des colonnes de deux lettres. Dans ce cas, vous avez besoin de la formule suivante pour analyser correctement les colonnes de deux lettres:

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

Je ne sais pas s'il existe un moyen plus simple de le faire ou non, mais je sais que cela fonctionne de cellule A1 à ZZ99 sans aucun problème. Cependant, cela illustre pourquoi il est préférable d'éviter l'utilisation d'identificateurs de colonne basés sur des lettres et de s'en tenir à des formules pures basées sur des nombres (par exemple, en utilisant le numéro de colonne au lieu d'une lettre avec OFFSET).

32
Breakthrough

Essayez la fonction suivante:

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

Explication: ADDRESS(row_num, column_num, [abs_num]). [abs_num] = 4 = adresse relative. Cela signifie qu'il n'y a pas de '$' dans la valeur renvoyée. Pour la colonne 'AB', la ADDRESS retournera 'AB1'. Le remplaçant enlève le '1'.

34
Scot Sutton

Essaye ça

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

Cela vous donne l'en-tête de colonne exact, sans aucun $, etc.

5
gaurav aggarwal

Pour obtenir le nom de la colonne, j'ai utilisé les formules suivantes.

Pour une cellule particulière:

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

Pour la cellule actuelle:

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

Essayez cette variante. Cela fonctionne sur les colonnes de 3 lettres, et ne laisse pas de "$" au début:

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

Tapez ceci dans n'importe quelle cellule:

Español :

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

Anglais :

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

Vous pouvez remplacer column () par le numéro de la ligne.

2
sygn

Cela fonctionnera aussi bien

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

Légèrement manuel mais moins VBA et une formule plus simple:

  • Dans une ligne d'Excel, par exemple cellule A1, entrez le numéro de colonne =column()
  • Dans la ligne ci-dessous, entrez =Address(1,A1)
  • Ceci fournira le résultat $A$1

Une fois les valeurs copiées, recherchez et remplacez $ et 1 par des blancs.

2
Steve

Une autre façon possible serait d'utiliser quelque chose comme ceci:

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

colid fait référence à une plagenom-nommée que vous voudriez créer ailleurs dans le classeur comprenant deux colonnes adjacentes à plusieurs lignes: la première colonne contenant les nombres 1 à n correspondant au numéro COLUMN(), la seconde contenant les lettres A - ZZ, ou quel que soit le nombre de références de colonnes que vous souhaitez héberger. La ROW() est très bien telle qu'elle est retournée.

Donc, si vous deviez copier la chaîne ci-dessus dans la cellule A1 de 'MySheet2', elle serait évaluée en tant que =MySheet1!A1 et renverrait la valeur trouvée dans la cellule correspondante de MySheet1.

Cela vous permettrait, par exemple, d'utiliser MySheet1 comme zone de travail, de supprimer et de réinsérer de nouvelles données, tandis que tout formatage ou calcul dans MySheet2 faisant référence à ce contenu continuera à fonctionner correctement avec les nouveaux jeux de données de l'onglet cible. feuille de travail.

1
Tigger

Solution pour la version Excel polonaise:

  • pour une cellule particulière:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • pour la cellule actuelle:
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
1
mla

Voici comment vous pouvez trouver l'en-tête de colonne (c'est-à-dire la lettre):

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

Voici une solution VBA, définie par l'utilisateur, solution. Il fonctionne avec des colonnes de 1, 2 et 3 lettres.

Placez ce qui suit dans un module de code:

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 () dans n'importe quelle cellule retournera la lettre de colonne de la cellule.
= COLUMNLETTER (B3) dans n'importe quelle cellule retourneraB.

Cette fonction définie par l'utilisateur fonctionne parfaitement lors de la création de formules génériques dans la fonction INDIRECT.

0
GollyJer

La formule suivante fonctionne peu importe où vous la mettez (elle vous donnera le nom de la colonne).

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

La formule d'adresse fonctionne en renvoyant le nom de la colonne et de la ligne. Le format renvoyé sera toujours $(Column Letters)$(Row Numbers) - par exemple. $AA$2 ou $XAA$243556

Si nous savons que $ apparaîtra toujours au premier caractère, nous pouvons utiliser la première formule du milieu pour commencer à tirer les caractères après le premier signe $ (c.-à-d. Le deuxième caractère).

Ensuite, nous trouvons le prochain signe $ (car nous savons qu'il n'y en aura que deux) et nous savons combien il y a de caractères entre le premier et le deuxième signe dollar. Le reste est une simple soustraction.

0
Jon

essaye ça:

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