Quelle est la fonction pour obtenir le numéro de ligne actuel et le nom de la colonne actuelle d'une cellule dans Excel?
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
).
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'.
Essaye ça
=SUBSTITUTE(SUBSTITUTE(CELL("address"),"$" & ROW(),""), "$", "")
Cela vous donne l'en-tête de colonne exact, sans aucun $, etc.
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),"")
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.
Cela fonctionnera aussi bien
=MID(CELL("address"),2,FIND("$",CELL("address"),2)-2)
Légèrement manuel mais moins VBA et une formule plus simple:
=column()
=Address(1,A1)
$A$1
Une fois les valeurs copiées, recherchez et remplacez $
et 1
par des blancs.
Une autre façon possible serait d'utiliser quelque chose comme ceci:
=INDIRECT("MySheet1!"&LOOKUP(COLUMN(),colid)&ROW())
Où 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.
Solution pour la version Excel polonaise:
=PODSTAW(PODSTAW(KOMÓRKA("adres";B1);"$" & WIERSZ();""); "$"; "")
=PODSTAW(PODSTAW(KOMÓRKA("adres");"$" & WIERSZ();""); "$"; "")
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)
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.
La formule suivante fonctionne peu importe où vous la mettez (elle vous donnera le nom de la colonne).
=SUBSTITUTE(SUBSTITUTE(ADDRESS(ROW(),COLUMN()),"$",""),ROW(),"")
=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.
essaye ça:
=LEFT(ADDRESS(1,COLUMN(),4),LEN(ADDRESS(1,COLUMN(),4))-1)