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

Comment obtenir le nom de la colonne actuelle dans Excel ?

Advertisement

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

Advertisement
Advertisement

Réponses (16)

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

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 retournée. Pour la colonne “AB”, le ADDRESS renvoie “AB1”. Le substitut supprime le “1”.

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

Pour ce faire, vous pouvez utiliser les fonctions ROW et COLUMN. Si vous omettez l'argument pour ces formules, la cellule actuelle est utilisée. Celles-ci peuvent être utilisées directement avec la fonction OFFSET , ou toute autre fonction où vous pouvez spécifier à la fois la ligne et la colonne comme valeurs numériques.

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

Si vous voulez la lettre de la colonne, vous pouvez utiliser la fonction CHAR. Je ne recommande pas l'utilisation de lettres pour représenter la colonne, car les choses se compliquent lorsque l'on passe à des noms de colonne à deux lettres (où il est de toute façon plus logique d'utiliser des chiffres).

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 étant un caractère de moins que A), donc dans l'exemple précédent, si vous fixez la valeur de la cellule à =CHAR(COLUMN()+64), la valeur renvoyée serait D. Si vous vouliez que la valeur d'une cellule soit l'emplacement de la cellule elle-même, la formule complète serait =CHAR(COLUMN()+64) & ROW().


Juste pour info, j'ai obtenu 64 à partir d'une table ASCII. Vous pouvez également utiliser la formule CODE, ainsi la formule mise à jour en utilisant ceci serait =CHAR(COLUMN() + CODE("A") - 1). Vous devez soustraire 1 puisque la valeur minimale de COLUMN est toujours 1, et que la valeur de retour minimale de toute la formule serait donc B.

Cependant, 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 y a une manière plus simple de le faire ou non, mais je sais que cela fonctionne de la cellule A1 à ZZ99 sans problème. Cependant, cela illustre pourquoi il vaut mieux éviter d'utiliser des identifiants de colonne basés sur des lettres et s'en tenir à des formules purement numériques (par exemple, utiliser le numéro de colonne au lieu de la lettre avec OFFSET).

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

Essayez ceci

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

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

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

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

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

Une fois les valeurs copiées, trouvez et remplacez $ et 1 par un blanc.

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

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. Elle fonctionne sur des colonnes de 3 lettres, et ne laisse pas de “$” au début :

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

Cela fonctionnera également

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

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)

English :

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

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

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

Une autre possibilité serait d'utiliser quelque chose comme ceci :

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

colid fait référence à une plage nommé que vous créeriez ailleurs dans le classeur, comprenant deux colonnes adjacentes à plusieurs lignes : la première colonne contenant les chiffres 1 à n correspondant au numéro COLUMN(), la seconde contenant les lettres A - ZZ, ou le nombre de références de colonne que vous souhaitez adapter. Le ROW() est très bien laissé tel quel pour renvoyer le numéro de ligne.

Donc si vous copiez la chaîne ci-dessus dans la cellule A1 de “Ma feuille 2”, elle sera évaluée comme =MySheet1!A1 et renverra la valeur qu'elle a 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 qui se réfère à ces contenus continuera à fonctionner correctement avec les nouveaux ensembles de données de la feuille de travail à onglet cible.

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

Solution pour le polonais Version Excel :

  • pour une cellule particulière :
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
  • pour la cellule actuelle :
=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 formule d'adresse fonctionne en renvoyant le nom de la colonne et de la ligne. Le format retourné sera toujours $(Column Letters)$(Row Numbers) - par exemple $AA$2 ou $XAA$243556

Si nous savons que $ se trouvera 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'est-à-dire le 2ème caractère).

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

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

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

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

Cette fonction définie par l'utilisateur fonctionne très bien lors de la création de formules génériques dans la fonction INDIRECTE.

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

essayez ceci :

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

Voici comment trouver le titre de la colonne (c'est-à-dire la lettre) :

=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 formule suivante fonctionne quel que soit l'endroit où vous la mettez (elle vous rendra le nom de la colonne).

=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

essayez ceci :

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

cette fonction est effective jusqu'à “ZY1” ou column=701

Advertisement

Questions connexes

6
13
9
10
2
Advertisement