Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
808to812
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
808to812
808to812
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

sortieren von 1.1.2 und ähnlichen Werten

sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 10:22:10
1.1.2
Hi,
ich hoffe ihr könnt mir helfen. Ich habe tausende von Datensätzen, die zunächst nach zwei Spalten sortiert werden müssen, damit ich anschl. aus diesen beiden Spalten durch 'concatenate' einen eindeutigen Key bilden kann.
Mein Problem liegt in der 2. Spalte, die Werte hat wie z.B.:
9.2.120
1
2
2.2.1
2.2.2
3
4
22.8.3.12
4.2
10.3.4.
2.1
6
7.2.3
7.7.2.3
8.4.3
9.2.224
41.3
Wenn ich mit 'sort anything that looks like a number, as a number' sortiere, erhalte ich die folgende Sortierung:
1
2
3
4
6
2.2.1
2.2.2
7.2.3
8.4.3
2.1
4.2
10.3.4.
22.8.3.12
41.3
7.7.2.3
9.2.120
9.2.224
Die zweite Option 'sort numbers and numbers stores as text separately' bringt's leider auch nicht:
1
2
10.3.4.
2.1
2.2.1
2.2.2
22.8.3.12
3
4
4.2
41.3
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
Richtig sollte das Ganze so sortiert werden:
1
2
2.1
2.2.1
2.2.2
3
4
4.2
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
10.3.4.
22.8.3.12
41.3
Erschwerend kommt hinzu, daß nicht bekannt ist, ob die Ziffern zwischen den Punkten 1-, 2- oder dreistellig sind, und wieviele Punkte es in einer Zelle gibt.
Gruß
Baerbel

35
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 10:56:59
1.1.2
Hallo,
das geht nur mit einer Hilfsspalte direkt neben Deinen Werten.
Deine o.a. Werte stehen in Spalte A.
Hier die Formel für Spalte B (exemplarisch für Wert in A1):
=LINKS(A1;WENN(ISTFEHLER(FINDEN(".";A1))=WAHR;2;FINDEN(".";A1))-1)
diese Formel auf alle Zeilen runterziehen.
Anschließend Daten/sortieren und nach Spalte B "Alles was wie eine Zahl aussieht, als Zahl sortieren. Voilá.
Gruß,
Ptonka
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 11:34:24
1.1.2
Hi,
nicht schlecht, aber die Sortierung ist noch immer nicht ganz richtig:
1
2
2.2.1
2.2.2
2.1 *******
3
4
4.2
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
10.3.4.
22.8.3.12
41.3
Gruß
Bärbel
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 11:17:50
1.1.2
Hi Bärbel,
Spalte A wird sortiert in dem Ax auf Bx Cx Dx usw bis Gx am "Punkt" zerlegt wird, die leeren Zellen in B1:Gx werden dann mit Nullen befüllt um korekkte Sortierung zu ermöglichen, dann wird nach B,C,D sortiert. Anschliessend B1:Gx gelöscht.
Beim Cell-Befehl : Cells(Z, 2 + w) steht die 2 für B (A=1,B=2,C=3,usw), wenn du also den Code anpasst musst du A,B und diese 2 anpassen.
Alt+F11,Einfügen Modul, Code reinkopieren, Anpassen, Editor schliessen.
Start durch Extras--makro--Makro--Ausführen...
Option Explicit
Sub tt()
Dim Z As Long, Wert, w As Integer, Zeilen As Long
Zeilen = Range("A65536").End(xlUp).Row
Range("B1:G" & Zeilen) = 0
For Z = 1 To Zeilen
Wert = Split(Cells(Z, 1), ".")
For w = 0 To UBound(Wert)
Cells(Z, 2 + w) = Wert(w)
Next w
Next Z
Range("A1:G" & Zeilen).Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1") _
, Order2:=xlAscending, Key3:=Range("D1"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Range("B1:G" & Zeilen).ClearContents
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 11:31:04
1.1.2
Hallo Reinhard,
das war's leider noch nicht ganz ...
Gruß
Bärbel
1
10.3.4. *******
2
2.1
2.2.1
2.2.2
22.8.3.12 *******
3
4
4.2
41.3 *******
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 11:37:12
1.1.2
Hi Bärbel,
kann nicht sein, Code funtioniert (Xl2000), klick mal in der Tabelle auf "Sortieren":
https://www.herber.de/bbs/user/37222.xls
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 11:54:11
1.1.2
Sorry,
ich habe es wiederholt (ganz ohne Anpassungen, einfach nur copy_and_paste) ... das Ergebnis ist leider unverändert.
Kann es an meinem Rechner-Set-Up liegen?
Ich habe EXCEL 2003 (engl. Version) und ich mein Rechner ist sonst englisch-sprachig mit deutscher Tastatur ...
Gruß
Bärbel
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 12:01:29
1.1.2
Hi Bärbel,
Codesprache ist englisch, von daher erahne ich keine Fehlermöglickeiten.
Wurde denn meine Tabelle korrekt sortiert), alos mit dem Ergebnis:
1
2
2.1
2.2.1
2.2.2
3
4
4.2
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
10.3.4.
22.8.3.12
41.3
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 12:10:20
1.1.2
Hi,
nein eben nicht, deshalb ja meine Vermutung, es könne etwas mit dem Set-Up zu tun haben. Mein Sort-Ergebnis sieht anders aus als deins - wie folgt:
1
10.3.4.
2
2.1
2.2.1
2.2.2
22.8.3.12
3
4
4.2
41.3
6
7.2.3
7.7.2.3
8.4.3
9.2.120
9.2.224
Gruß
Bärbel
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 13:03:04
1.1.2
Hi,
jetzt habe ich den Fehler gefunden: Es fehlt der 'DataOption1:=xlSortTextAsNumbers'-Eintrag. Danach funktioniert es.
Danke.
Gruß
Bärbel
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 13:13:57
1.1.2
Hi Bärbel,
ich glaube ich habs, liegt am Zellenformat von B1:Gx, bei "zahl" kommt meine Sortierung,bei "Text" deine Sortierung:
Option Explicit
Sub tt()
Dim Z As Long, Wert, w As Integer, Zeilen As Long
Zeilen = Range("A65536").End(xlUp).Row
Range("B1:G" & Zeilen).NumberFormat = "0"
Range("B1:G" & Zeilen) = 0
For Z = 1 To Zeilen
Wert = Split(Range("A" & Z), ".")
For w = 0 To UBound(Wert)
Cells(Z, 2 + w) = Wert(w)
Next w
Next Z
Range("A1:G" & Zeilen).Sort Key1:=Range("B1"), Order1:=xlAscending, Key2:=Range("C1") _
, Order2:=xlAscending, Key3:=Range("D1"), Order3:=xlAscending, Header:= _
xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
'Range("B1:G" & Zeilen).ClearContents
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: stimmt, habe noch ein weiteres Problem
06.10.2006 13:48:55
Bärbel
Hallo Reinhard,
danke für den Hinweis, das habe ich inzwischen auch rausgefunden und eingebaut (DataOption1:=xlSortTextAsNumber).
Aber es scheint so zu sein, daß ich nur 3 Keys sortieren kann. Ich habe dafür den allgemeinen Range von 'G' auf 'I' erweitert, und den speziellen für Key4 auf 'E1' gesetzt, aber ich bekomme vom Debugger immer den Compliation-Fehler 'named argument not found'.
Ist das ein generelles EXCEL-Problem oder stelle ich mich zu doof an?
Bärbel
AW: stimmt, habe noch ein weiteres Problem
06.10.2006 14:32:22
Reinhard
Hi Bärbel,
schau doch mal in die VBA-Hilfe zu sort, bei XL2000 gibts nur 3 Schlüssel.
Aber du kannst nach mehr Schlüsseln sortieren, anenommendu hast A,B,C,D,E und willst nach allen 5 Schlüsseln sortieren, dann alles markieren, erst nach C,D,E sortieren, dann nach A,B, fertig.
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: stimmt, habe noch ein weiteres Problem
06.10.2006 14:52:41
Bärbel
Hallo Reinhard,
da hast du recht, aber wie baust du das in dein Skript ein? Ich habe definitiv Zellen mit mehr als nur 2 Punkten (=3 Sortierkriterien).
Gruß
Bärbel
AW: stimmt, habe noch ein weiteres Problem
06.10.2006 15:18:33
Reinhard
Hi Bärbel,
jetzt darfste 254 Punkte einbauen :-)
Dein DataOptions oder wie das hiess hat XL2000 nich, aber das spielt ja keine Rolle.
Option Explicit
Sub tt()
Dim Z As Long, Wert, w As Integer, Zeilen As Long, Spalten As Integer, S As Integer
Application.ScreenUpdating = False
On Error GoTo Fehler
Zeilen = Range("A65536").End(xlUp).Row
For Z = 1 To Zeilen
Wert = Split(Range("A" & Z), ".")
If Spalten < UBound(Wert) Then Spalten = UBound(Wert)
Next Z
Range(Cells(1, 2), Cells(Zeilen, 2 + Spalten)) = 0
For Z = 1 To Zeilen
Wert = Split(Range("A" & Z), ".")
For w = 0 To UBound(Wert)
Cells(Z, 2 + w) = Wert(w)
Next w
Next Z
For S = Spalten To 0 Step -1
Range(Cells(1, 1), Cells(Zeilen, 2 + Spalten)).Sort Key1:=Cells(1, 2 + S), Order1:=xlAscending, _
Header:=xlNo, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
Next S
Range(Cells(1, 2), Cells(Zeilen, 2 + Spalten)).ClearContents
Fehler:
Application.ScreenUpdating = True
End Sub

Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 13:00:00
1.1.2
Hallo zusammen,
vielleicht funzt es ja so: Markierter Bereich wird sortiert...
Gruß Ingo
PS eine Rückmeldung wäre nett...
Option Explicit

Sub sort_titles()
Dim zelle As Range
Dim ii&, jj&, kk&
Dim Liste() As String
Dim tzelle, tliste
Dim Anzahl&
Dim kleiner As Boolean
If Selection.Columns.Count <> 1 Then
MsgBox "Bitte nur eine Spalte markieren!!!"
Exit Sub
End If
Anzahl = 0
For Each zelle In Selection
If zelle <> "" Then
If Anzahl > 0 Then
tzelle = Split(zelle, ".")
For ii = 1 To Anzahl
tliste = Split(Liste(ii), ".")
kleiner = False
For kk = 0 To UBound(tzelle)
If kk <= UBound(tliste) Then
If tzelle(kk) * 1 > tliste(kk) * 1 Then
Exit For
ElseIf tzelle(kk) * 1 < tliste(kk) * 1 Then
kleiner = True
End If
End If
Next kk
If kleiner Then Exit For
Next ii
ReDim Preserve Liste(Anzahl + 1)
Anzahl = UBound(Liste)
For jj = Anzahl To ii + 1 Step -1
Liste(jj) = Liste(jj - 1)
Next jj
Liste(ii) = zelle
Else
ReDim Liste(Anzahl + 1)
Anzahl = UBound(Liste)
Liste(1) = zelle
End If
End If
Next zelle
For ii = 1 To Anzahl
Selection(ii) = Liste(ii)
Next ii
End Sub

Anzeige
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 13:07:31
1.1.2
Danke an alle, jetzt funktioniert mein Sorting
Vorsicht!!!!
06.10.2006 13:33:02
ingoG
Hallo Bärbel,
die andere Lösung funzt jedoch mE nur bei bis zu 2 Punkten, also 3 sortierkriterien...
meine Lösung sollte auch bei n Punkten noch funzen.
Gruß ingo
AW: Erweiterung
06.10.2006 13:37:11
ingoG
Hallo,
ich habe noch 2 Zeilen eingefügt (bei Leerzeilen bleiben sonst unten noch Artefakte stehen...)
Gruß Ingo
Option Explicit

Sub sort_titles()
Dim zelle As Range
Dim ii&, jj&, kk&
Dim Liste() As String
Dim tzelle, tliste
Dim Anzahl&
Dim kleiner As Boolean
If Selection.Columns.Count <> 1 Then
MsgBox "Bitte nur eine Spalte markieren!!!"
Exit Sub
End If
Anzahl = 0
For Each zelle In Selection
If zelle <> "" Then
If Anzahl > 0 Then
tzelle = Split(zelle, ".")
For ii = 1 To Anzahl
tliste = Split(Liste(ii), ".")
kleiner = False
For kk = 0 To UBound(tzelle)
If kk <= UBound(tliste) Then
If tzelle(kk) * 1 > tliste(kk) * 1 Then
Exit For
ElseIf tzelle(kk) * 1 < tliste(kk) * 1 Then
kleiner = True
Exit For
End If
End If
Next kk
If kleiner Then Exit For
Next ii
ReDim Preserve Liste(Anzahl + 1)
Anzahl = UBound(Liste)
For jj = Anzahl To ii + 1 Step -1
Liste(jj) = Liste(jj - 1)
Next jj
Liste(ii) = zelle
Else
ReDim Liste(Anzahl + 1)
Anzahl = UBound(Liste)
Liste(1) = zelle
End If
End If
Next zelle
Selection.ClearContents
For ii = 1 To Anzahl
Selection(ii) = Liste(ii)
Next ii
End Sub

Anzeige
AW: Erweiterung die 2.
06.10.2006 13:53:39
ingoG
Hallo Bärbel,
in einigen Fällen kam es zu fehlsortierungen deshalb die hoffentlich letzte version...
Gruß Ingo
PS eine Rückmeldung wäre nett...
Option Explicit

Sub sort_titles()
Dim zelle As Range
Dim ii&, jj&, kk&
Dim Liste() As String
Dim tzelle, tliste
Dim Anzahl&
Dim kleiner As Boolean
If Selection.Columns.Count <> 1 Then
MsgBox "Bitte nur eine Spalte markieren!!!"
Exit Sub
End If
Anzahl = 0
For Each zelle In Selection
If zelle <> "" Then
If Anzahl > 0 Then
tzelle = Split(zelle, ".")
For ii = 1 To Anzahl
tliste = Split(Liste(ii), ".")
kleiner = False
For kk = 0 To UBound(tzelle)
If kk <= UBound(tliste) Then
If tzelle(kk) * 1 > tliste(kk) * 1 Then
Exit For
ElseIf tzelle(kk) * 1 < tliste(kk) * 1 Then
kleiner = True
Exit For
ElseIf kk = UBound(tzelle) And kk < UBound(tliste) Then
kleiner = True
End If
End If
Next kk
If kleiner Then Exit For
Next ii
ReDim Preserve Liste(Anzahl + 1)
Anzahl = UBound(Liste)
For jj = Anzahl To ii + 1 Step -1
Liste(jj) = Liste(jj - 1)
Next jj
Liste(ii) = zelle
Else
ReDim Liste(Anzahl + 1)
Anzahl = UBound(Liste)
Liste(1) = zelle
End If
End If
Next zelle
Selection.ClearContents
For ii = 1 To Anzahl
Selection(ii) = Liste(ii)
Next ii
End Sub

AW: Erweiterung
06.10.2006 14:08:26
Bärbel
Hi Ingo,
das (nur 3 Sortierkriterien) habe ich auch gerade herausgefunden :-)
Deine Lösung läuft aber auf einen Run-time error (13): Type mismatch
für Zeile If tzelle(kk) * 1 'Größerzeichen' tliste(kk) * 1 Then
Leider sind meine VBA-Kenntnisse nur beschränkt ...
Gruß
Bärbel
AW: Erweiterung
06.10.2006 14:26:25
ingoG
Hallo Bärbel,
das hat wahrscheinlich etwas mit Deinen Einstellungen bei der Typkonvertierung zu tun.
ersetze doch einfach die Zeile durch
If CLng(tzelle(kk)) > CLng(tliste(kk)) Then
und die nächste abfrage durch
ElseIf CLng(tzelle(kk)) Das sollte klappen.
ansonsten liegt es evtl. an den Daten, wenn diese zwischen den Punkten nicht nur Ziffern enthalten....
Gruß Ingo
DANKE - jetzt klappt es
06.10.2006 14:42:49
Bärbel
Hi Ingo,
es lag an meiner 'header row', ohne sie habe ich keine Probleme mehr.
Danke.
Gruß
Bärbel
Ist leider doch nicht die Lösung
06.10.2006 14:56:07
Bärbel
Hi,
ich war zu schnell, ich muß ja ganze Listen mittels dieser und einer anderen Spalte sortieren. Also kein Sort innerhalb nur einer Spalte. Geht das auch irgendwie?
Gruß
Bärbel
AW: Ist leider doch nicht die Lösung
06.10.2006 15:22:19
Reinhard
Hi Bärbel,
wie heisst diese Spalte, wie heisst die andere Spalte, von wo bis wo gehen deine Datenspalten (auch zukünftig, also ab welcher Spalte nach rechts ist Freiraum für Hilfsspalten?
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
AW: Ist leider doch nicht die Lösung
06.10.2006 15:54:51
ingoG
nächster Versuch ;-)
es wird immer nach der linksten markierten Zelle sortiert .
also zuerst den Bereich markieren und dann folgendes Makro starten:
Gruß Ingo
Option Explicit

Sub sort_titles()
Dim zelle As Range
Dim Bereich As Range
Dim ii&, jj&, kk&
Dim Liste() As String
Dim tzelle, tliste
Dim Anzahl&
Dim kleiner As Boolean
Dim antwort
Dim spalten&
If Selection.Columns.Count <> 1 Then
antwort = MsgBox("Soll der markierte Bereich nach der linken Spalte sortiertwerden", vbYesNo)
If antwort <> vbYes Then Exit Sub
End If
Anzahl = 0
Set Bereich = Selection
spalten = Selection.Columns.Count
Bereich.Columns(1).Select
For Each zelle In Selection
If zelle <> "" Then
If Anzahl > 0 Then
tzelle = Split(zelle, ".")
For ii = 1 To Anzahl
tliste = Split(Liste(1, ii), ".")
kleiner = False
For kk = 0 To UBound(tzelle)
If kk <= UBound(tliste) Then
If CLng(tzelle(kk)) > CLng(tliste(kk)) Then
Exit For
ElseIf CLng(tzelle(kk)) < CLng(tliste(kk)) Then
kleiner = True
Exit For
ElseIf kk = UBound(tzelle) And kk < UBound(tliste) Then
kleiner = True
End If
End If
Next kk
If kleiner Then Exit For
Next ii
ReDim Preserve Liste(spalten, Anzahl + 1)
Anzahl = UBound(Liste, 2)
For jj = Anzahl To ii + 1 Step -1
For kk = 1 To spalten
Liste(kk, jj) = Liste(kk, jj - 1)
Next kk
Next jj
For kk = 1 To spalten
Liste(kk, ii) = zelle.Offset(0, kk - 1)
Next kk
Else
ReDim Liste(spalten, Anzahl + 1)
Anzahl = UBound(Liste, 2)
For kk = 1 To spalten
Liste(kk, 1) = zelle.Offset(0, kk - 1)
Next kk
End If
End If
Next zelle
Selection.ClearContents
For ii = 1 To Anzahl
For kk = 1 To spalten
Selection(ii, kk) = Liste(kk, ii)
Next kk
Next ii
End Sub

AW: Ist leider doch nicht die Lösung
06.10.2006 15:58:00
Bärbel
Hi Reinhard,
ich kann die Spalten zunächst mal in der Liste so umstellen wie ich will, es handelt sich lediglich um eine Arbeitslistung. Hilfsspalten sind also kein Problem.
Die nächsten Schritte sind ein 'concatenate' mit einer anderen Spalte, die den ersten Verkettungsteil darstellt. z.B. '40-', '123-' oder '2-' (also max 3 Ziffern, denen ein Bindestrich folgt). Beide Spalteninhalte sind für sich genommen nicht eineindeutig. Durch die Verkettung werden sie eineindeutig und dienen in einer Weiterverarbeitung als eindeutiger Key. Sämtliche Restzeileninhalte müssen dann anhand dieses eindeutigen Keys sortiert werden. Anschl. werden die Daten zusammen mit diesem Key nach SAP upgeloaded.
Ich hoffe, das hilft dir weiter.
Auf alle Fälle erst mal ein großes Danke - ich zumindest ein großes Stück weiter.
Gruß
Bärbel
AW: Ist leider doch nicht die Lösung
06.10.2006 16:22:22
Reinhard
Hi Bärbel,
mach ma bitte eine kleine Beispieldatei mit so 10-30 Zeilen in Blatt1 mit dem gleichen Aufbau wie die Originaldaten. Dann auf Blatt 2 eintragen wie das Endresultat vor dem Export nach SAP ausssehen soll. GGfs noch weitere Blätter, falls Zwischenschritte wichtig sind zum Verständnis.
ist die 2-,123- Spalte die vorher erwähnte 2te Spalte oder eine 3te und wie soll dieses Contenenate (was immer das ist *g) funktionieren wenn die Spaltenwerte mitsortiert werden, dann isses ja nur ein Verknüpfen oder so.
Gruß
Reinhard
AW: hier ist ein Bespiel
06.10.2006 21:53:08
Reinhard
Hi Lady,
ja es ist verständlch für mich *rumgrummel* Hätteste nicht gleich sagen können dass nach C dass aus A&B besteht sortiert werden soll, so haben wir uns nur um B gekümmert :-C
Gruß
Reinhard
AW: hier ist ein Bespiel
07.10.2006 15:11:20
Reinhard
Hi Bärbel,
suchst du noch nach der Lösung ?
Gruß
Reinhard
ps: Ich freue mich über eine Rückmeldung ob diese Antwort hilfreich war oder nicht..
Danke ich habe jetzt eine Lösung
Bärbel
Hi Reinhard,
sorry für die sprachliche Ungenauigkeit.
Danke für deine Bemühungen, sie waren nicht vergeblich. Ich habe einige neue Parameter kennengelernt etc.
Die Lösung, die Ingo vorgeschlagen hat funktioniert.
Gruß
Bärbel
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 15:50:59
1.1.2
Hallo Bärbel,
vielleicht ist das Beispiel die Lösung deines Sortierproblems
https://www.herber.de/bbs/user/37228.xls
Viele Grüße Peter
Eine kurze Nachricht, ob es läuft, wäre nett - danke.
AW: sortieren von 1.1.2 und ähnlichen Werten
06.10.2006 20:06:58
1.1.2
Hallo Bärbel,
versuchs mal damit...
die Zellen sollten mit text (@) formatiert sein und die Daten in a2:e? stehen.
(Die Formatierung verhindert, dass aus 2-1 der 1. Februar gemacht wird...)
Gruß Ingo
PS eine Rückmeldung wäre nett...
Option Explicit

Sub sort_titles()
Dim zelle As Range
Dim Bereich As Range
Dim ii&, jj&, kk&
Dim Liste() As String
Dim tzelle, tliste
Dim Anzahl&
Dim kleiner As Boolean
Dim antwort
Dim spalten&
'If Selection.Columns.Count <> 1 Then
'    antwort = MsgBox("Soll der markierte Bereich nach der linken Spalte sortiertwerden", vbYesNo)
'    If antwort <> vbYes Then Exit Sub
'End If
Anzahl = 0
Set Bereich = ActiveSheet.Range("A2:E" & ActiveSheet.Range("A65536").End(xlUp).Row)
spalten = 5
For Each zelle In Intersect(Bereich, ActiveSheet.Range("C:C"))
If zelle <> "" Then
If Anzahl > 0 Then
tzelle = Split(Replace(zelle, "-", "."), ".")
For ii = 1 To Anzahl
tliste = Split(Replace(Liste(3, ii), "-", "."), ".")
kleiner = False
For kk = 0 To UBound(tzelle)
If kk <= UBound(tliste) Then
If CLng(tzelle(kk)) > CLng(tliste(kk)) Then
Exit For
ElseIf CLng(tzelle(kk)) < CLng(tliste(kk)) Then
kleiner = True
Exit For
ElseIf kk = UBound(tzelle) And kk < UBound(tliste) Then
kleiner = True
End If
End If
Next kk
If kleiner Then Exit For
Next ii
ReDim Preserve Liste(spalten, Anzahl + 1)
Anzahl = UBound(Liste, 2)
For jj = Anzahl To ii + 1 Step -1
For kk = 1 To spalten
Liste(kk, jj) = Liste(kk, jj - 1)
Next kk
Next jj
For kk = 1 To spalten
Liste(kk, ii) = zelle.Offset(0, kk - 3)
Next kk
Else
ReDim Liste(spalten, Anzahl + 1)
Anzahl = UBound(Liste, 2)
For kk = 1 To spalten
Liste(kk, 1) = zelle.Offset(0, kk - 3)
Next kk
End If
End If
Next zelle
Bereich.ClearContents
For ii = 1 To Anzahl
For kk = 1 To spalten
ActiveSheet.Cells(ii + 1, kk) = Liste(kk, ii)
Next kk
Next ii
End Sub

DANKE - diesmal war's wirklich die Lösung
Bärbel
Hallo Ingo,
ein Riesen-Dankeschön, du hast mir sehr viele, manuelle Einzelschritte erspart ...
Gruß
Bärbel
Gerne, danke für die Rückmeldung oT
10.10.2006 09:35:37
ingoG
.

146 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige