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.

Andy K
la source
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é

CallumDA
la source
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

SeanC
la source
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.

Hannu
la source
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))
Nick Fleetwood
la source
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))
shA.t
la source
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 !!!

Mark Twain
la source
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))
Ivanoff
la source
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)

Sundar
la source
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.

Graham Porter
la source
-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")))
user560874
la source
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))

user2459372
la source
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