Wie inkrementiere ich einen String wie AA zu AB?

10

Ich habe Zeichenfolgen in Excel wie AAoder XA.

Ich muss sie wie folgt erhöhen:

Denn AAin Zelle A1 befindet es sich ABin Zelle B1, ACin Zelle B2 und so weiter.

Denn XAin Zelle A1 befindet es sich XBin Zelle B1, XCin Zelle B2 und so weiter.

Ich habe den beliebten Code ausprobiert, =CHAR(CODE(A1)+1)aber er funktioniert nach Z nicht mehr.

Hinweise sind willkommen.

Andy K.
quelle
Does not work after Z? Meinen Sie nach AZoderZZ
Dave
Hallo Dave, ich habe AB ausprobiert und es hat seitdem nach B gesucht.
Andy K
Wenn dies etwas mit der Art und Weise zu tun hat, wie Excel auf Zellen verweist, sollten Sie dies vermeiden, indem Sie mit der RC-Notation arbeiten:File > Options > Formulas >R1C1 reference style
Dirk Horsten
Hallo Dirk, vielen Dank für den Rat. Aber warum?
Andy K
1
Wenn Sie beispielsweise vorhaben, die resultierenden Zeichenfolgen in einer INDIRECTFormel zu verwenden, ist der Kommentar von @ DirkHorsten möglicherweise erwähnenswert.
CallumDA

Antworten:

11

Versuchen Sie Folgendes : Geben Sie "AA" in Zelle A1 ein, geben Sie die folgende Formel in Zelle B1 ein und ziehen Sie über

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

Es wird wie folgt erhöht: AA, AB, AC, ..., AZ, BA, BB, BC .... usw.

Möglicherweise möchten Sie diese Formel an Ihre spezielle Präsentation anpassen. Bitte beachten Sie, dass dies nach "ZZ" nicht mehr funktioniert.

Update: Fehler behoben

CallumDA
quelle
1
= WENN (RECHTS (A1) = "Z", CHAR (CODE (LINKS (A1)) + 1), LINKS (A1)) & WENN (RECHTS (A1) <> "Z", CHAR (CODE (RECHTS (A1)) ) +1), CHAR (65))
user26631
3

Wir können die Excel-Tabelle selbst verwenden, um die Buchstaben zu erhöhen - die Erhöhung funktioniert von AbisXFC

Erstellen Sie zuerst die Zellreferenz: INDIRECT(A1&"1")
Suchen Sie dann die Adresse der nächsten Spalte über: ADDRESS(1,COLUMN(INDIRECT(A10&"1"))+1)

Dann extrahieren wir aus dem $ ?? $ 1 die Buchstaben: 2 Wege:

  1. Suchen Sie nach dem zweiten $ und schneiden Sie den Text zwischen ihnen heraus

    =MID(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2,FIND("$",ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1),2)-2)
    
  2. Ersetzen Sie die 1 und $ durch nichts in der Zeichenfolge

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

Wählen Sie, welches für Sie am besten geeignet ist

SeanC
quelle
2
Sie können das Ersetzen von "$" vermeiden, indem Sie das optionale dritte Argument 4in die ADDRESSFunktion aufnehmen, damit eine relative Zellreferenz zurückgegeben wird. Dann brauchen Sie nur noch die Formel:=SUBSTITUTE(ADDRESS(1,COLUMN(INDIRECT(A1&"1"))+1,4),"1","")
Excellll
2

Ein weiteres Beispiel: Geben Sie dies in Zelle A1 ein und kopieren Sie die Formel in eine oder alle Zellen.

= CHAR (MOD (REIHE (A1) -1; 26) +65) & CHAR (MOD (SPALTE (A1) -1; 26) +65)

Als Beispiel dafür gedacht, wie man über das Problem denken kann.

Hannu
quelle
2

Dies wird auf "A" zurückgesetzt, wenn es "Z" erreicht.

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

Sie können darüber hinaus mit mehr if-Anweisungen aufbauen.

ODER

Ich habe gerade diese Formel für etwas Ähnliches geschrieben:

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
quelle
1

Als weitere Lösung für die Verwendung ADDRESS()gilt:

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

Die obige Formel kehrt AAin der ersten Zeile und ABin der zweiten Zeile usw. zurück.

Auch bei der Verwendung von Mathematik lautet die Formel:

=CONCATENATE(CHAR(INT(ROW()/26)+65),CHAR(MOD(ROW()-1,26)+65))
shA.t.
quelle
1

Ich habe diesen Code verwendet, um die Zellenadresse zu erhalten

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

Dieses Beispiel AT17bezieht sich auf die Zellenadresse.

Inkrementieren Sie definieren, wie viele Zahlen Sie inkrementieren möchten

Ich habe diesen Code in Zelle geschrieben Ax17.

Später erhielt ich Wert von AT17mit

=INDIRECT(AX17)

Erledigt !!!

Jetzt können Sie Spalten anstelle von Zeilen erhöhen !!!

Mark Twain
quelle
0

Hier ist meine Lösung (Zelle A1 enthält "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
quelle
0

Füllen Sie Spalte A (aus Zeile 1) mit fortlaufenden Nummern, die mit 0 bis 100 beginnen [oder bis erforderlich]

Füllen Sie Zelle B1 mit der folgenden Formel

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

Kopieren Sie die Formel von B1 in andere Zeilen in Spalte B [bis zu der Zeile, die Sie in Spalte A ausgefüllt haben].

Dies funktioniert für 3 Zeichen AAA bis ZZZ

Die Formel muss gemäß Nr. 1 geändert werden. Anzahl der erforderlichen Zeichen (AA bis ZZ / AAAAA bis ZZZZZ / etc)

Sundar
quelle
0

Ich weiß, dass dies etwas von der Hauptfrage abweicht, aber ich denke, es beantwortet die umfassendere Frage ... Wenn Sie einen Buchstaben in A1 haben und möchten, dass er durch eine Zahl in B1 gestuft wird, wird dies durch die folgende Formelkombination erreicht Einzelbriefe an 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)))

Kopieren Sie es in die Spalte und die Ergebnisse sind da. Ändern Sie die B5-Nummer und die Ergebnisse ändern sich.

Graham Porter
quelle
-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
quelle
2
Können Sie bitte einige Erklärungen hinzufügen, erweitern Sie Ihre Antwort
Romeo Ninov
-1

Für Spalten ist das Folgende die richtige Lösung.

= IF (LEN (ADRESSE (1, SPALTE ())) = 4, MITTE (ADRESSE (1, SPALTE ()), 2,1), MITTE (ADRESSE (1, SPALTE ()), 2,2))

user2459372
quelle
3
Ich sehe nicht, wie Ihre Formel die Frage "Wie kann man einen String wie AA auf AB inkrementieren?" Beantwortet.
Máté Juhász