Comment incrémenter une chaîne comme AA en AB?


10

J'ai des chaînes dans Excel comme AAou XA.

Je dois les incrémenter comme ceci:

Car AAdans la cellule A1, ce sera ABdans la cellule B1, ACdans la cellule B2 et ainsi de suite.

Car XAdans la cellule A1, ce sera XBdans la cellule B1, XCdans la cellule B2 et ainsi de suite.

J'ai essayé le code populaire =CHAR(CODE(A1)+1)mais il ne fonctionne pas après Z.

Tous les indices sont les bienvenus.


Does not work after Z? Voulez-vous dire après AZouZZ
Dave

Salut Dave, j'ai essayé AB et il cherche B depuis.
Andy K

Si cela a quelque chose à voir avec la façon dont Excel se réfère aux cellules, envisagez de l'éviter en travaillant avec la notation RC:File > Options > Formulas >R1C1 reference style
Dirk Horsten

Salut Dirk, merci beaucoup pour les conseils. Mais pourquoi?
Andy K

1
Si vous envisagez d'utiliser les chaînes résultantes dans une INDIRECTformule par exemple, alors le commentaire de @ DirkHorsten mérite d'être noté.
CallumDA

Réponses:


11

Essayez ceci: mettez "AA" dans la cellule A1 et entrez la formule suivante dans la cellule B1 et faites-la glisser

=IF(RIGHT($A1,1)="Z", CHAR(CODE(LEFT(A1,1))+1),LEFT(A1,1))&CHAR(65+MOD(CODE(RIGHT(A1,1))+1-65,26))

Il augmentera comme suit: AA, AB, AC, ..., AZ, BA, BB, BC .... etc.

Vous voudrez peut-être adapter cette formule à votre présentation particulière. Veuillez noter que cela ne fonctionnera pas après "ZZ".

Mise à jour: bug corrigé


1
= SI (DROIT (A1) = "Z", CHAR (CODE (GAUCHE (A1)) + 1), GAUCHE (A1)) & SI (DROIT (A1) <> "Z", CHAR (CODE (DROIT (A1)) ) +1), CHAR (65))
user26631

3

Nous pouvons utiliser la feuille de calcul Excel elle-même pour aider à incrémenter les lettres - l'incrément fonctionnera de AàXFC

Créez d'abord la référence de la cellule: INDIRECT(A1&"1")
Trouvez ensuite l'adresse de la colonne suivante sur: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Puis à partir du $ ?? $ 1 on extrait les lettres: 2 façons:

  1. Recherchez le deuxième $ et coupez le texte entre eux

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Remplacez le 1 et $ par rien dans la chaîne

    =SUBSTITUTE(SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),"$",""),"1","")
    

Choisissez celui qui vous convient le mieux


2
Vous pouvez éviter la substitution de «$» en incluant le troisième argument facultatif 4dans la ADDRESSfonction pour lui faire retourner une référence de cellule relative. Ensuite, vous avez juste besoin de la formule:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll

2

Autre exemple: saisissez-le dans la cellule A1, puis copiez la formule dans une ou toutes les cellules.

= CHAR (MOD (LIGNE (A1) -1; 26) +65) & CHAR (MOD (COLONNE (A1) -1; 26) +65)

Conçu comme un exemple de la façon dont on peut penser au problème.


2

Cela sera réinitialisé à "A" quand il atteindra "Z"

=IF(A1="Z", "A", CHAR(CODE(A1)+1))

Vous pouvez construire au-delà de cela avec plus d'instructions if.

OU

Je viens d'écrire cette formule pour quelque chose de similaire:

IF(RIGHT(C2,1)="Z",IF(RIGHT(C2,2)="ZZ","A",CHAR(CODE(MID(C2,5,1))+1)),MID(C2,5,1))&IF(RIGHT(C2,1)="Z","A",CHAR(CODE(MID(C2,6,1))+1))

1

Une autre solution pour cela avec l'aide ADDRESS()est:

=MID(ADDRESS(1,26+ROW()),2,2)

La formule ci-dessus reviendra AAdans la première rangée et ABdans la deuxième rangée et ainsi de suite.

En utilisant les mathématiques, la formule est également:

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))

1

J'ai utilisé ce code pour obtenir l'adresse de la cellule

=ADDRESS(ROW($AT$17),COLUMN($AT$17)+Increment,4,1)

Cet exemple concerne AT17l'adresse de cellule.

Incrémentez vous définissez combien de nombres vous incrémenterez

J'ai écrit ce code dans la cellule Ax17.

Plus tard, j'ai obtenu la valeur de AT17avec

=INDIRECT(AX17)

Terminé !!!

Vous pouvez maintenant incrémenter des colonnes au lieu de lignes !!!


0

Voici ma solution (la cellule A1 contient "AA"):

=IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(CODE(LEFT(A2;1))+1);CHAR(CODE(LEFT(A2;1))))&IF(CHAR(CODE(RIGHT(A2;1))+1)="[";CHAR(65);CHAR(CODE(RIGHT(A2;1))+1))

0

Remplissez la colonne A (de la ligne 1) avec des nombres consécutifs commençant par 0 à 100 [ou jusqu'à exigence]

Remplissez la cellule B1 avec la formule ci-dessous

=CONCATENATE(CHAR(MOD(QUOTIENT(A1,26*26),26)+65),CHAR(MOD(QUOTIENT(A1,26),26)+65),CHAR(MOD(A1,26)+65))

Copiez la formule de B1 vers les autres lignes de la colonne B [jusqu'à la ligne que vous avez remplie la colonne A]

Cela fonctionne pour 3 caractères AAA à ZZZ

La formule doit être modifiée conformément au no. de caractères requis (AA à ZZ / AAAAA à ZZZZZ / etc)


0

Je sais que cela est légèrement hors de la question principale, mais je pense que cela répond à la question plus complète ... Si vous avez une lettre en A1, et que vous souhaitez qu'elle soit accompagnée d'un nombre en B1, la combinaison de formules suivante le réalisera à partir de lettres simples à ZZ.

 =IF(LEN(A1)>1,IF((CODE(RIGHT(A1,1))+$B$1)>CODE("Z"),CHAR(CODE(LEFT(A1,1))+1)&CHAR(CODE(RIGHT(A1,1))-21),LEFT(A1,1)&CHAR(CODE(RIGHT(A1,1))+$B$1)),IF((CODE(A1)+$B$1)>CODE("Z"),"A"&CHAR(CODE(A1)-21),CHAR(CODE(A1)+$B$1)))

Copiez-le dans la colonne et les résultats sont là. Modifiez le numéro B5 et les résultats changent.


-1
=IF(AND(LEN(G1)=1,G1="Z"), "AA", IF(LEN(G1)=1, CHAR(CODE(G1)+1), IF(RIGHT(G1,1)<>"Z", LEFT(G1,1)&CHAR(CODE(RIGHT(G1,1))+1), CHAR(CODE(G1)+1)&"A")))

2
Pouvez-vous s'il vous plaît ajouter quelques explications, étendre votre réponse
Romeo Ninov

-1

Pour les colonnes, ce qui suit est la bonne solution.

= SI (LEN (ADRESSE (1, COLONNE ())) = 4, MID (ADRESSE (1, COLONNE ()), 2,1), MID (ADRESSE (1, COLONNE ()), 2,2))


3
Je ne vois pas comment votre formule répond à la question "Comment incrémenter une chaîne comme AA à AB?".
Máté Juhász
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.