Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
776to780
776to780
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Sortierung von Textund_Zahl_und_Text_und_Zahl

Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 13:12:30
George
Hallo ihr Excelkönige und -königinnen,
wie könnte eine Tabelle nach einer Spalte (wahrscheinlich nur mit VBA) sortiert werden, in deren Zelleninhalt sich eine Kombination verschiedener Daten (nach Leerzeichen aneinandergereihter Text und Zahlen) befindet? Ich suche bereits stundenlang nach einer Lösung und finde aber meist nur andere Lösungsgesuche - so scheint es ein haeufigeres Problem zu sein...
Übrigens bitte beachtet, dass der eigentlich vernünftige Weg der Aufteilung in einzelne Zellen aufgrund der riesigen Datenmenge im Moment ausgeschlossen ist.
Zur Veranschaulichung: Es gibt ein tab mit ca. 30 Spalten. Nun soll diese Tabelle nach einer Spalte sortiert werden. Deren Zellinhalte lauten beispielsweise:
Leuchte 10W
Leuchte 100W
Leuchte 30W
Lampe 50W
Lampe grün 5000W
Lampe grün 40W
Lampe grün 100W
Lampe grün 10W
Birne für Lampe 12W 220V
Birne für lampe 20W 220V
Strukturiert könnte man also sagen:
artikel spezifikation1 spezifikation2
Die Sortierung sollte erstens nach text
und zweitens (anschließend als quasi zweites Kriterium) nach spezifikation1 erfolgen - eine weitere Sortierung z. B. spezifikation2 waere gut, ist aber nicht zwingend erforderlich.
Im Beispiel würde die Sortierung dann so aussehen:
Birne für Lampe 12W 220V
Birne für lampe 20W 220V
Lampe 50W
Lampe grün 10W
Lampe grün 40W
Lampe grün 100W
Lampe grün 5000W
Leuchte 10W
Leuchte 30W
Leuchte 100W
Da ich trotz intensiver Lösungssuche nicht wirklich weiter gekommen bin,
würde ich mich wahnsinnig freuen, wenn jemandem von Euch etwas einfaellt!
Doch bitte respektieren, dass die Daten im Moment wirklich nicht neu gestaltet werden können - mir ist klar, dass dies eigentlich notwendig waere...
Allen einen schönen Sonntag,
sonnige Grüße, George
PS: Ich konnte nicht in Erfahrung bringen, ob es erlaubt ist, hier einen link auf ein anderes Forum zu setzen, wo ich das Problem ebenfalls angeführt habe. Würde das die Regeln brechen oder in Ordnung sein, weil es der gemeinsamen Lösungssuche dienlich waere? Ein kluger User hat dort naemlich schon einen guten, doch leider noch unvollstaendigen Lösungsansatz aufgezeigt.

9
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 14:02:34
Erich G.
Hallo George,
es wäre durchaus angebracht gewesen, hier den Link zum anderen Forum hinzuschreiben.
(Wenn das Crossposting schon sein muss...)
Hier mein Vorschlag, sortiert nach B/C/D:
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 14:08:20
Erich G.
Hallo George,
kleine Korrektur (ich hatte noch nicht vollständig sortiert):
Zeile 2 (24V) wird durch den Sort Zeile 3, steht also nach der Zeile mit 110V.
Aber auch das ließe sich mit den Formeln noch bewerkstelligen.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 18:56:11
George
Hallo Erich,
vielen Dank für Deine Anregungen. Ich bin begeistert (und etwas beschaemt), dass Du Dich gleich ans Werk machst. Merci!
Trotzdem bin ich noch nicht ganz glücklich,
da ich eben die Tabelle und ihre Inhalte (also auch die Zellinhalte der Spalten) nicht veraendern oder auseinander reißen kann: Es sind derer zuviele und jede Strukturaenderung zieht eine Lawine an Anpassungen nach sich.
Also Ausgangssituation ist die bestehende Tabelle. Was vielleicht möglich waere, ist die hintergründliche, "virtuelle" Zerlegung mit anschließender Sortierung plus Wiedervereinigung - doch wird vermutlich die Performance darunter arg leiden. Insofern suche ich nach einer Lösung - gerne per VBA -, die eine Spalte mit sauberem Datensatz (siehe mein Beispiel) sortiert. Die Kriterien, auch für die Struktur, sind m. E. eindeutig und sollten doch genügen, oder?
Also es waere schon, wenn Dir oder jemand anderem eine Idee einfaellt.
Ach, und falls ich Dich missverstanden habe, bitte Info :-)
Viele Grüße,
& frohes Schaffen allgemein!
George
Anzeige
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 18:58:29
George
Hallo Erich,
vielen Dank für Deine Anregungen. Ich bin begeistert (und etwas beschaemt), dass Du Dich gleich ans Werk machst. Merci!
Trotzdem bin ich noch nicht ganz glücklich,
da ich eben die Tabelle und ihre Inhalte (also auch die Zellinhalte der Spalten) nicht veraendern oder auseinander reißen kann: Es sind derer zuviele und jede Strukturaenderung zieht eine Lawine an Anpassungen nach sich.
Also Ausgangssituation ist die bestehende Tabelle. Was vielleicht möglich waere, ist die hintergründliche, "virtuelle" Zerlegung mit anschließender Sortierung plus Wiedervereinigung - doch wird vermutlich die Performance darunter arg leiden. Insofern suche ich nach einer Lösung - gerne per VBA -, die eine Spalte mit sauberem Datensatz (siehe mein Beispiel) sortiert. Die Kriterien, auch für die Struktur, sind m. E. eindeutig und sollten doch genügen, oder?
Also es waere schon, wenn Dir oder jemand anderem eine Idee einfaellt.
Ach, und falls ich Dich missverstanden habe, bitte Info :-)
Viele Grüße,
& frohes Schaffen allgemein!
George
Anzeige
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
25.06.2006 19:49:57
Erich G.
Hallo George,
ich geh mal davon aus, dass rechts noch Platz für die vier Hilfsspalten ist,
oder ist in deiner Tabelle auch noch die Spalte IS belegt?
Dann kannst du die Hilfsspalten rechts anfügen, sortieren und wieder löschen.
Wie stehst du zu der "falschen" Sortierung von 24V und 110V in meinem Beispiel?
Tritt so etwas auf? Müsste auch dabei richtig sortiert werden?
Bei meiner Antwort bin ich von "Excel-Profi - VBA nein" ausgegangen.
Eine VBA-Lösung geht natürlich auch. Wie willst du die nötigenfalls anpassen, bei VBA nein?
Ich lass mal offen - vielleicht schreibt jemand eine Prozedur...
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
26.06.2006 11:01:36
George
Hallo Erich,
vielen Dank für Deine nochmalige Rückmeldung!
Ich habe in der Tat noch freie Spalten, die auch theoretisch als Hilfsspalten verwendet werden können. Allerdings muss dieser Lösungsweg aus drei Gründen ausgeschlossen werden:
1. Die Sortierung sollte per Mausklick (also simpel für jeden User) möglich sein und daher wie ein Autofilter arbeiten.
2. Die Sortierung erfolgt nicht in Excel, sondern in Navision und einem Webshop, der auf XML-Dateien basiert. Da eine VBA-Prozedur dort jeweils integrierbar ist, wird sie wahrscheinlich auch die Lösung sein.
3. Da vor der Sortierung über ein Combofeld eine Vorauswahl getroffen wird, sehe ich ausserdem Schwierigkeiten, die Ausgangstabelle (und es sollte nur eine tab sein) um zusaetzliche Hilfsspalten zu erweitern. Zwar könnte theoretisch für die Sortierung eine Alias-Tabelle gebildet werden, die dann manipuliert werden könnte, doch würde die Performance bei getaetigter max. Auswahl im Combofeld von 2.500 Eintraegen deutlich leiden. (Insgesamt sprechen wir von 5 Tabellen à 40.000 Datensaetzen.)
Weil Du es in Deiner ersten Antwort angeregt hast, verweise ich auf das zweite von mir gesetzte Posting in einem anderen Forum: Beim "Crossposting", wie Du es nanntest, ging es mir ausschließlich um Bemühung einer Lösungsfindung - bei wirklich diffizilen Problemen, wie meines offenbar eines ist (ich recherchierte bereits 15 Stunden u.a. auch das komplette Herber-Forum), denke ich persönlich, dass eine mehrfache Suche dann auch sinnvoll ist. Allerdings verstehe ich natürlich auch das Bedürfnis nach Exklusivitaet der Forumbetreiber und Forummitglieder, falls "Crossposting" als Konkurrenz erzeugend angesehen wird. Waere aber aus fachlicher Sicht schade!
Deshalb hier der Link, in dem bisher in meinen Augen zumindest ein sehr guter Ansatz aufgezeigt wurde, der leider allerdings das Problem noch nicht wirklich löst:
http://www.supportnet.de/threads/1367058
Zu Deiner Frage der "falschen Sortierung": Dies Problem taucht tatsaechlich auf und muss gelöst werden. Durch die Vielseitigkeit der Formate, vor allem bedingt durch die Zahlen als Textformate z. B. 220V, entstehen zahlreiche "falsche" also unsinnige Sortierungen. Grrr!
Bzgl. "VBA: Nein": Ich waehlte dies aus, weil ich keine profunden VBA-Kenntnisse habe. Ich codiere zwar desöfteren seit Jahren (v.a. Access), doch quaele ich mich arg damit. Eine Anpassung traue ich mir deshalb theoretisch zu, auch wenn es mich u. U. sicherlich viele lange Naechte kosten und zu lauten Verfluchungen verleiten würde...:-)
Danke, dass Du mein Posting "offen" laesst! :-)
Waere super, wenn Du oder jemand anderer Kreativer eine Lösungsidee hat...
Danke Dir nochmals,
und allen Anderen im Voraus!
Erfolgreiche Woche, George
Anzeige
AW: Sortierung von Text_und_Zahl_und_Text_und_Zahl
26.06.2006 23:16:15
Erich G.
Hallo George,
versuchs mal damit:
Option Explicit
Sub Sort_Text_Zahlen()
Dim lngZ, Calc As XlCalculation
Const Spalt = 1  ' Spalte, nach der sortiert werden soll
Const maxTx = 16 ' max. Länge eines Textteils
Const maxZa = 4  ' max. Länge eines Zahlenteils
Calc = Application.Calculation
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Columns(1).Insert
Columns(1).NumberFormat = "@"
For lngZ = 1 To Cells(Rows.Count, Spalt + 1).End(xlUp).Row
Cells(lngZ, 1) = TxtExpandNum(Cells(lngZ, Spalt + 1), maxTx, maxZa)
Next lngZ
Range("A1").Sort Key1:=Range("A1"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Columns(1).Delete
Application.Calculation = Calc
Application.EnableEvents = True
Application.ScreenUpdating = True
End Sub
Function TxtExpandNum(strQ As String, maxT As Integer, maxZ As Integer) As String
Dim tt As String * 1, pp As Integer, NNa As Boolean, NNn As Boolean
Dim zwi As String, Erg As String
zwi = Left(strQ, 1)
NNa = zwi >= "0" And zwi <= "9"
tt = Right(Left(strQ, 2), 1)
NNn = tt >= "0" And tt <= "9"
pp = 2
Do
Do While NNn = NNa
zwi = zwi & tt
pp = pp + 1
If pp > Len(strQ) Then Exit Do
tt = Right(Left(strQ, pp), 1)
NNn = tt >= "0" And tt <= "9"
Loop
If NNa Then
Erg = Erg & String(maxZ - Len(zwi), "0") & zwi
Else
Erg = Erg & zwi & String(maxT - Len(zwi), " ")
End If
If pp > Len(strQ) Then Exit Do
zwi = ""
NNa = NNn
Loop
XEND:
TxtExpandNum = RTrim(Erg)
End Function
Wenn es einen Fehler bei String(...) gibt, musst du maxTx oder maxZa vergrößern.
Wenn du zum Testen mal das "Columns(1).Delete" auskommentierst, kannst du sehen, wonach sortiert wird.
Rückmeldung wäre nett! - Grüße von Erich aus Kamp-Lintfort
Anzeige
ERICH IST WELTMEISTER!!!!
27.06.2006 22:04:16
George
Also, Erich, Du machst mich sprachlos:
Dein Code ist_PERFEKT_GRANDIOS_FULMINANT_EINFACH_WELTMEISTERLICH_!!
Ich habe nur mehr die Größendefintionen angepasst und dann hat er mir furchtbar wild durcheinander geordnete 35.000 Datensaetze 1A sortiert, wie ich es gewünscht habe.
Du hast wirklich meinen größten Respekt - Deinen Code nachzuvollziehen, macht mir ja schon Schwierigkeiten.
Sag, wie kann ich 1. einen Kamp-Lintforter und 2. einen VBA-Meister erfreuen?
Meine Emailadresse hat Hans Herber - kontaktiere mich mal.
Apropos Herber: Da ich bisher für mein Problem keine Lösung aber diverse Gesuche fand (offenbar gibt's noch Andere, die sich mit derart schrecklichen und falschen Strukturen herumaergern müssen): Wo sollte/könnte Dein Lösungsweg veröffentlicht werden? Vielleicht in der Herber-Collection der wichtigsten Codes? :-)
Also im Moment bleibt mir nur laut "DANKE" zu rufen,
und hoch erfreut mich morgen wieder "schöneren Dingen" zu widmen.
Allerdings werde ich -sofern ich etwas beitragen kann- in naechster Zeit mal öfter ins Forum als Helfer gehen...So ein Geschenk wie Erich Codes verpflichtet ja regelrecht...
Liebe Grüße
& nochmal MERCI
Anzeige
Danke für Rückmeldung ...
27.06.2006 22:48:52
Erich G.
Hi George,
nun bin ich (nur fast, wie man sieht) sprachlos - das ist zu viel der Ehre.
Freut mich, dass es funzt und dein Problem gelöst ist!
Zu PERFEKT gehörte IMHO noch einiges mehr, z. B.
- kein Fehlerabbruch bei zu klein gesetzten Konstanten, sondern automatische Bestimmung der Dann-nicht-mehr-Konstanten,
- Erkennung nicht nur natürlicher, sondern auch Dezimalzahlen, auch negativer,
- Beschleunigung,
- ...
Da bliebe immer noch etwas zu tun.
Grüße von Erich aus Kamp-Lintfort

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige