Fortlaufende Buchstaben in Excel, aber wie?

4 Antworten

Vom Fragesteller als hilfreich ausgezeichnet

Ich hatte Dich auch zuerst so wie lamiam verstanden, dass Du die Kombinationen nebeneinander, als in einer Zeile haben willst. lamiams Idee dafür die Spaltenüberschriften zu nutzen ist echt raffiniert.
Ich wäre, und bin, anders an das Problem herangegangen, und zwar mit der Funktion REST.
Je öfter ich DIE nutze, desto mächtiger erscheint sie mir.
SO klappt es also auch:

=ZEICHEN((REST((SPALTE(A1)-1)/(26*26);26)+65))&ZEICHEN((REST((SPALTE(A1)-1)/26;26)+65))&ZEICHEN(REST(SPALTE(A1)-1;26)+65)

und nach rechts kopieren.
Das geht dann sogar bis YGD, das dann in der letzten Spalte - nämlich Spalte XFD - steht, falls man in Spalte A angefangen hat.

Jetzt lese ich aber gerade, dass Du von "nach unten kopieren" gesprochen hast.
Und da Du auch noch mit vierstelligen weitermachen möchtest, gehe ich dann mal davon aus, dass Du die Liste doch in einer Spalte haben willst.
Und DA ist meine Lösung dann flexibler, denn für nach unten kopieren lässt sie sich SO anpassen:

=ZEICHEN((REST((ZEILE(A1)-1)/(26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)-1)/26;26)+65))&ZEICHEN(REST(ZEILE(A1)-1;26)+65)

Wenn Du DIE z.B. in A1 schreibst, und dann runterkopierst, landest Du in A17576 (26^3) bei ZZZ. Jetzt schreibst Du in Deiner Frage:

Danach ging es dann mit vierstelligen Buchstabenkombinationen weiter.

Das ist imho nicht ganz logisch. Wie soll es nach ZZZ weitergehen?
Mit AAAA?
Oder mit ZZZA ( und dann nach ZZZZ wie?
Also denke ich mal (korrigiert mich, wenn ich falsch denke) dass es dann sinnvoller ist gleich vierstellig anzufangen, als mit AAAA, AAAB usw.
Dazu lässt sich meine Formel auch sehr leicht erweitern, und zwar so:

=ZEICHEN((REST((ZEILE(A17577)-1)/(26*26*26);26)+65))&ZEICHEN((REST((ZEILE(A17577)-1)/(26*26);26)+65))&ZEICHEN((REST((ZEILE(A17577)-1)/26;26)+65))&ZEICHEN(REST(ZEILE(A17577)-1;26)+65)

Diese Formel in A1 geschrieben und dann runterkopiert, ergibt in:
A17576: AZZZ
A17577: BAAA
A17578: BAAB
...
A1048576: HRDV
An DER Stelle ist dann Excel zu Ende.
Allerdings kann man dann gerne noch in Zelle B1 fortsetzen, mit dieser leicht angepassten Formel (und runterkopieren):

=ZEICHEN((REST((ZEILE(A1)+1048575)/(26*26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+1048575)/(26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+1048575)/26;26)+65))&ZEICHEN(REST(ZEILE(A1)+1048575;26)+65)

Damit landet man dann in / bei:
B1048576 bei: PIHR

Formel erneut angepasst und in C1 geschrieben (und runterkopiert):

=ZEICHEN((REST((ZEILE(A1)+2*1048575+1)/(26*26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+2*1048575+1)/(26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+2*1048575+1)/26;26)+65))&ZEICHEN(REST(ZEILE(A1)+2*1048575+1;26)+65)

und in C1048576 steht : WZLN

Und zu guter Letzt noch in D1 die Formel:

=ZEICHEN((REST((ZEILE(A1)+3*1048575+2)/(26*26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+3*1048575+2)/(26*26);26)+65))&ZEICHEN((REST((ZEILE(A1)+3*1048575+2)/26;26)+65))&ZEICHEN(REST(ZEILE(A1)+3*1048575+2;26)+65)

und wir sind in Zelle D53104 am Ziel mit ZZZZ.
Danach geht es dann wieder von Vorne los mit AAAA.
So, jetzt habe ich mich an dem Thema mal richtig ausgelassen.
Hat mir aber auch Spaß gemacht.
Und die ganzen Formeln sind bei weitem nicht so schlimm, wie sie aussehen.
KERN ist immer:
ZEICHEN(REST(ZEILE(A1)-1;26)+65)
und dann erweitert (jetzt mal mehr mathematisch ausgedrückt) durch:
ZEICHEN(REST((ZEILE(A1)-1+ x * 1048576 (+Spalte - 1));26^y)+65)

Ich hoffe ich konnte helfen und habe nicht zu sehr verwirrt.

Woher ich das weiß:Berufserfahrung – IT-Administrator (i.R.)
rbeier 
Fragesteller
 07.06.2013, 11:20

Herzlichen Dank, hat alles wunderbar funktioniert und die Formel ist sehr leicht anzupassen.

0
Iamiam  07.06.2013, 22:40
@Oubyi, UserMod Light

Hi Oubyi, Du hast mal wieder die kürzere Lösung und auch schneller: DH !
aber meine hat mir auch Spass gemacht und sie basiert auf dem Start-TEXT
(im Kommentar zu meiner AW)

0

=Zeichen(Spalte()+64)
ergibt für die ersten 26 Spalten die Einzelbuchstaben
Sollen die wiederholt werden, dann
=ZEICHEN(REST(SPALTE()-1;26)+65)
Mit Spalte()-1 kannst Du die Buchstaben um eins nach rechts versetzen (mit -2 um 2 usw)
Willst Du aber die Spaltenbezeichnung abbilden, empfiehlt sich eine andere Konstruktion:

=TEIL(ZELLE("Adresse";A1);2;FINDEN("$";TEIL(ZELLE("Adresse";A1);2;9))-1)
und das nach rechts kopieren

Wenn das aber mit AAA beginnen soll, muss dieser Bereich versetzt werden, in zB.A1 muss AAA1 angesprochen werden, also:

=TEIL(ZELLE("Adresse";AAA1);2;FINDEN("$";TEIL(ZELLE("Adresse";AAA1);2;9))-1)

Das geht allerdings nicht über den Bezug auf die letzte Zelle hinaus, hört also 26^2 =676 Spalten vor Ende des Blattes mit XFD auf.. Vierstellig würdest DXu in den xl-Spalten gar nicht unterbringen. Aber brauchst Du das wirklich oder ist das nur eine theoretische Überlegung? Mit viel Phantasie und Arbeit ließe sich eine solche Formel (zB als Fkt der Zeilen) durchaus konstruieren, irgendwie mit Ganzzahl und Rest, wird aber sperrig und recht mühsam! Muss immerhin in xl irgendwie integriert sein!

Ungefähr so: =wechseln("@";"";wechseln("@";"";(Zeichen(Ganzzahl(Zeile()/26^2)+64)&Zeichen(Ganzzahl((Zeile()-Ganzzahl(Zeile()/26^2))/26+64)&Zeichen(Rest(Zeile();26^2)+65))))
das Wechseln von @ gegen Nichts ist erforederlich, um Zeichen(64+0) =@ zu unterdrücken. Ist mir aber jetzt zu mühsam, das durchzudeklinieren oder gar auf 4 Zeichen zu erweitern!

Tipp: wenn Du einen Teil der Formel, der ein Zwischenergebnis darstellen sollte, in der Bearbeitungszeile markierst und dann (ohne Eingabetaste!) F9 drückst, wird Dir dieses Teilergebnis angezeigt. Musst die Zelle aber mit esc verlassen, sonst ist der mühsam erstellte Formelteil futsch!

Iamiam  07.06.2013, 22:35

Oubyi hat wieder mal die bessere/kürzere Lösung, trotzdem hier noch mein Ansatz, der Vollständigkeit halber. Er basiert nur auf der Zeichenfolge (Textanalyse, also nicht auf Spalte() oder Zeile())
Zwei Formeln, die sich gegenüber Erweiterungen/Verkürzungen unterschiedlich verhalten.
1.Formel mit Teil(in A1):

=WENN(CODE(TEIL(A1;2;1))<90;TEIL(A1;1;1);ZEICHEN(WENN(CODE(TEIL(A1;1;1))<90;CODE(TEIL(A1;1;1))+1;65)))
&WENN(CODE(TEIL(A1;3;1))<90;TEIL(A1;2;1);ZEICHEN(WENN(CODE(TEIL(A1;2;1))<90;CODE(TEIL(A1;2;1))+1;65)))
&WENN(CODE(TEIL(A1;4;1))<90;TEIL(A1;3;1);ZEICHEN(WENN(CODE(TEIL(A1;3;1))<90;CODE(TEIL(A1;3;1))+1;65)))
&ZEICHEN(WENN(CODE(TEIL(A1;4;1))<90;CODE(TEIL(A1;4;1))+1;65))

Diese Formel nimmt die ersten 4 Zeichen zur Grundlage, tauscht aber nur A-Z aus. AAAA=>AAAB, AAAZ=>AABA usw. Charaktereistischer Fehler: XßAAA => YßAB. Bei weniger als 4 Zeichen ergibt sich #WERT!

Die zweite Formel (mit linls(rechts())) wertet von rechts her aus und sie ist durch einfaches Entfernen des kursiven Teils auf 3 (oder weniger) Zeichen zu verkürzen:
=WENN(CODE(LINKS(RECHTS(A2;3);1))<90;LINKS(RECHTS(A2;4);1);ZEICHEN(WENN(CODE(LINKS(RECHTS(A2;4);1))<90;CODE(LINKS(RECHTS(A2;4);1))+1;65)))
&
WENN(CODE(LINKS(RECHTS(A2;2);1))<90;LINKS(RECHTS(A2;3);1);ZEICHEN(WENN(CODE(LINKS(RECHTS(A2;3);1))<90;CODE(LINKS(RECHTS(A2;3);1))+1;65)))
&WENN(CODE(LINKS(RECHTS(A2;1);1))<90;LINKS(RECHTS(A2;2);1);ZEICHEN(WENN(CODE(LINKS(RECHTS(A2;2);1))<90;CODE(LINKS(RECHTS(A2;2);1))+1;65)))
&ZEICHEN(WENN(CODE(LINKS(RECHTS(A2;1);1))<90;CODE(LINKS(RECHTS(A2;1);1))+1;65))

Auch hier bei korrektem Vorlagetext alles ok, typischer Fehler: XßAAß=>ßABA.
Ein Tausch von dann<=> sonst und anstatt <90 => =90 führt zu anderen typischen Fehlern, da kann man sich rumspielen.

Nach ZZZZ oder ZZZZZ beginnt bei BEIDEN Formeln wieder ein neuer Zyklus mit AAAA.

0
Iamiam  07.06.2013, 23:22
@Iamiam

da ist noch ein Fehler drin, aber für heute kapituliere ich!
(wahrscheinlich muss ich mit UND() die Bedingung Code<90 auf die Zeichen weiter rechts erweitern, wahrscheinlich sogar die Argumente umstellen auf doch UND(Code(...x)=90;Code(..x.)=90;...)

0
Iamiam  08.06.2013, 23:40
@Iamiam

Der Vollständigkeit halber hier noch die richtige Formel:

=WENN(UND(LINKS(RECHTS(A1;3);1)="Z";LINKS(RECHTS(A1;2);1)="Z";LINKS(RECHTS(A1;1);1)="Z");ZEICHEN(WENN(LINKS(RECHTS(A1;4);1)="Z";65;CODE(LINKS(RECHTS(A1;4);1))+1));LINKS(RECHTS(A1;4);1))
&
WENN(UND(LINKS(RECHTS(A1;2);1)="Z";LINKS(RECHTS(A1;1);1)="Z");ZEICHEN(WENN(LINKS(RECHTS(A1;3);1)="Z";65;CODE(LINKS(RECHTS(A1;3);1))+1));LINKS(RECHTS(A1;3);1))
&
WENN(LINKS(RECHTS(A1;1);1)="Z";ZEICHEN(WENN(LINKS(RECHTS(A1;2);1)="Z";65;CODE(LINKS(RECHTS(A1;2);1))+1));LINKS(RECHTS(A1;2);1))
&
ZEICHEN(WENN(LINKS(RECHTS(A1;1);1)="Z";65;CODE(LINKS(RECHTS(A1;1);1))+1))

Sie arbeitet auch mit Kleinbuchstaben korrekt (da in xl "X"="x", gibt aber beim Wechsel vlon z=>a immer ein großes A wieder.
Auch Andere Zeichen (ß, à, 1, !) wertden nicht zurückgewiesen, aber die Auswertung durch Code(Zeichen)+1 führt zu zT absurden Ergebnissen:
[>>]>^>_>`>a>...>z>A
oder {>|>}>~> >¡>¢>£>Þ>ÿ>#WERT!... Bei dreistelligen Folgen wird ein A vorangestellt. Um sie korrekt zu verarbeiten, muss man den ersten Teil der Formel löschen (bei zweistelligen sinngemäß: die ersten beiden Teile).

Der Vorteil ggü der Oubyischen Fo ist lediglich, dass Du beliebig beginnen und die Reihe auch unterbrechen kannst, und eben die Kleinbuchstaben bevor ein z-Switch kommt.

0
Iamiam  09.06.2013, 15:18
@Iamiam

ach ja, noch ein Vorteil, der aber wahrscheinlich nirgends zur Anwendung kommt:

Die Formel reicht über HRDV hinaus (ohne Änderung).

Und sie ließe sich auch auf 5-stellige Zahlen und höher analog erweitern, würde aber immer länger.

0

Du kannst die Funktionen unter Text (Code und Zeichen) verwenden. Mit code wandelst du einen Buchstaben in eine Zahl um, umgekehrt mit Zeichen. D.h. du musst die Formel Zeichen (Code(Spaltenfeld links) +1) nach rechts fortsetzen, um a, b, c, d, e,... zu bekommen.

also "A" in Feld A1 und dann folgende Formel für B1...etc nach rechts ziehen

=ZEICHEN(CODE(A1)+1)

charis0110  07.06.2013, 00:24

ok - ich stelle gerade fest, dass deine 3er-Buchstabenkombinatioin dann nach einer entsprechend erweiterten Formel schreit. Aber zumindest haste schon Mal nen Ansatz.

0

Das müsste eigentlich wie bei den Zahlen gehen, einfach die ersten drei Spalten eingeben, alle drei markieren, dann mit linker und gehaltener Maustaste unten rechts an der Markierung in die gewünschte Richtung ziehen (also je nachdem ob die Spalten jetzt seitlich oder nach oder oben verlaufen sollen).

rbeier 
Fragesteller
 07.06.2013, 00:05

Geht leider nicht, jedenfalls nicht mit meinem Excel 2010.

1
Ortogonn  07.06.2013, 08:36

Geht nicht. Und leider auch nicht mit Calc, wie ich grad festgestellt habe.

0