Forum: PC Hard- und Software Excel: sortieren alpahnumerischer Ausdrücke


von M.A. S. (mse2)


Lesenswert?

Ich möchte in Excel Texte sortieren, die etwa so aussehen:
A1, A2, ... A9, A10, A11, B1, ... B9, B10, B12, ...
derart sortieren, dass die Zahlen nach den Buchstaben in der numerisch 
richtigen Reihenfolge stehen.
Also etwa so:

A1
A2
...
A9
A10
A11
...
B1
B2
...
B9
B10
B12
...

Was Excel standardmäßig liefert, ist leider das hier:
A1
A10
A11
A2
...
(Halt eine reine Textsortierung ohne Berücksichtigung der Zahlenwerte.)
Weiß da jemand eine Möglichkeit?

von D. I. (Gast)


Lesenswert?

Die "einfachste" Lösung wäre:

A01
A02
B01
B11

...

...

von D. I. (Gast)


Lesenswert?

Die nächste Lösung die mir in den Sinn käme wäre die Daten auf zwei 
Spalten aufzuteilen und multi-column sort zu machen

Spalte1 | Spalte 2
A         1
A         11
B         2
B         3

Und dann Sortieren nach Spalte1, bei Gleichheit nach Spalte2, wobei 
Spalte2 nicht als Text sondern numerisch behandelt werden soll.

von VBA (Gast)


Lesenswert?

Michael S. schrieb:
> Ich möchte in Excel Texte sortieren, die etwa so aussehen:A1, A2, ... A9, A10, 
A11, B1, ... B9, B10, B12, ...derart sortieren, dass die Zahlen nach den 
Buchstaben in der numerisch richtigen Reihenfolge stehen.Also etwa 
so:A1A2...A9A10A11...B1B2...B9B10B12...Was Excel standardmäßig liefert, ist leider 
das hier:A1A10A11A2...(Halt eine reine Textsortierung ohne Berücksichtigung der 
Zahlenwerte.)Weiß da jemand eine Möglichkeit?

Schmeiss den VB Editor an und schreibe dir eine eigene Sortierroutine.
Sollte nicht besonders schwer sein.
Du trennst zunächst Buchstaben- und Zahlenteil und sortierst 
anschließend den alphanumerischen Teil. Anschließend läuft eine zweite 
Sortierung über die numerischen Komponenten gleicher alphanumerischer 
Teile.

von VBA (Gast)


Lesenswert?

D. I. schrieb:
> Die "einfachste" Lösung wäre:A01A02B01B11......


Der Ansatz von D. I. (grotesque) ist natürlich auch nicht schlecht, d.h. 
du sorgst dafür, dass dein Input mit ausreichend führenden Nullen 
ausgestattet ist. Ist dies nicht möglich ist der Retter möglicherweise 
wieder eine kurze VB Routine, die den Input aufbereitet.

von M.A. S. (mse2)


Lesenswert?

Ich danke Euch allen für Eure schnellen Antworten!

@D.I. :
Die Daten fallen so ab, wie beschrieben. Eine führende Null ist nicht 
vorhanden und möchte ich auch nicht einfügen.
Die Idee aus Deinem zweiten Vorschlag hatte ich inzwischen selber und 
habe die Texte aufgeteilt (zum Glück ist der Alpha-Anteil links immer 
nur ein Zeichen lang, so dass dies besonders einfach war).

@VBA:
Das wollte ich vermeiden, VBA anzuwerfen. Ich bin im Umgang damit nicht 
firm und muss mich jedes Mal erst wieder einarbeiten, um damit etwas 
hinzukriegen.
In diesem Falle brauchte ich einfach eine schnelle Lösung.
Grundsätzlich führt daran aber evtl. kein Weg vorbei.
Ich habe nämlich öfter den Wunsch, Dinge anders zu sortieren, als Excel 
es von sich aus macht.
Beispiel: Stücklisten.
Bauteilbezeichner -> ähnliches Problem wie oben beschrieben.
Ganz übel: Bauteilwerte, am besten noch mit Einheiten, am besten noch 
mit verschiedenen Vorsilben vor den Einheiten (Mega, Kilo, Milli, Mikro, 
etc.)

von Albrecht H. (alieninside)


Lesenswert?

Das geht mit einer Extra-Sortierspalte, (einfach irgendwo einfügen), in 
der nur noch die aus A1, A2, A3, ..., TextIrgendwas952 extrahierten 
Zahlen stehen, also 1, 2 ,3, ..., 952.

Das geht mit folgender Formel:

{=1*TEIL(A1;VERGLEICH(WAHR;ISTZAHL(1*TEIL(A1;ZEILE($1:$9);1));0);ANZAHL( 
1*TEIL(A1;ZEILE($1:$9);1)))}

Die {} bedeuten "Matrixformel", d.h. man gibt den Formeltext normal ein 
also:

=1*TEIL(A1;VERGLEICH(WAHR;ISTZAHL(1*TEIL(A1;ZEILE($1:$9);1));0);ANZAHL(1 
*TEIL(A1;ZEILE($1:$9);1)))

und drückt zum Abschluss STRG+UMSCHALT+EINGABETASTE dadurch werden die 
{} geschweiften Klammern eingefügt.

Hier gibts noch einen Artikel von Microsoft dazu:
http://office.microsoft.com/de-de/excel-help/extrahieren-von-zahlen-aus-alphanumerischen-zeichenfolgen-HA001154901.aspx


Alternativ könnte man anstatt "*1" auch "WERT" verwenden:
{=WERT(TEIL(A1;VERGLEICH(WAHR;ISTZAHL(1*TEIL(A1;ZEILE($1:$9);1));0);ANZA 
HL(1*TEIL(A1;ZEILE($1:$9);1))))}

Nachtrag:
$1:$9 legt die maximale Stringlänge fest hier also 9 Zeichen, bei 
längeren Strings z.B. bis 20 Zeichen, schreibt man dann entsprechend 
$1:$20 etc.

von M.A. S. (mse2)


Lesenswert?

@Albrecht H.
Vielen Dank, Deine Ausführungen und der Artikel sind sehr interessant 
für mich. Sieht so aus, wie die Grundlagen zur Lösung von so manchen 
Problemen, die ich in der Vergangenheit schon hatte und die immer 'mal 
wiederkehren!

:)

von D. I. (Gast)


Lesenswert?

Albrecht H. schrieb:
> Hier gibts noch einen Artikel von Microsoft dazu:
> http://office.microsoft.com/de-de/excel-help/extra...

Der Autor dieses Artikels ist Ashish Mathur, ein Microsoft MVP (Most 
Valuable Professional).

---

Wow, ich bin beeindruckt. Den Titel will ich auch, dazu der Algorithmus 
wie er nur von einem MVP stammen kann :)

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.