Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1296to1300
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
Inhaltsverzeichnis

Sortierfunktion

Sortierfunktion
04.02.2013 21:17:13
ludmila
Hallo
ich habe ein Problem mit dem sortieren
In Spalte A z.B
1
1.1
1.1.10
1.1.101
1.1.102
1.2
1.2.100
1.2.1001
100
100.1
100.1.12
100.1.12.1
100.1.12.2
2
2.1
2.1.12
2.1.12.1
Egal wie ich es sortieren lasse, die 100 müsste als letzes stehen.
Nun will ich das so lösen in dem ich die Punkte weg lasse und dafür die Zahlen als 1000000000 (Hundertmillionen) darstelle.
Dim Anz%
Anz = Len(Textbox1) wie kann ich erreichen, das wenn die Anzahl z.B 3 ist um 7 Nullen ergänzt wird.
Danke!
Gruß
Ludmila

7
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Sortierfunktion
04.02.2013 22:31:53
Peter
Hallo Ludmila,
ich würde vier Hilfsspalten verwenden in die ich die am Punkt gesplitteten Daten mit Vornullen versehen würde.
Diese vier Spalten würde ich als Sortierspalten (natürlich mit der 5., der Datenspalte) sortieren
Dann die vier Hilfsspalten wieder löschen
Ich kann als Excel 2003 Spieler den Sort nicht für Dich erzeugen, das musst Du selbst einfügen.
Option Explicit
Public Sub Sortieren()
Dim lZeile  As Long
Dim vTemp   As Variant
Dim iIndx   As Integer
With ThisWorkbook.Worksheets("Tabelle3") ' den Tabellenblattnamen ggf. anpassen
'        4 Spalten vor Spalte A mit den Daten einfügen
For iIndx = 1 To 4
.Columns("A:A").Insert Shift:=xlToRight
Next iIndx
.Columns("A:D").NumberFormat = "@"
'        ab Zeile 1 in jetzt Spalte 5 = E
For lZeile = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
If Trim$(.Range("E" & lZeile).Value)  "" Then
vTemp = Split(.Range("E" & lZeile).Value, ".")
For iIndx = 0 To UBound(vTemp)
.Cells(lZeile, iIndx + 1).Value = Format(vTemp(iIndx), "0000")
Next iIndx
End If
For iIndx = 1 To 4
If .Cells(lZeile, iIndx) = "" Then .Cells(lZeile, iIndx).Value = "0000"
Next iIndx
Next lZeile
'        hier den Sort nach den ersten vier Spalten einbauen
'          hier die 4 Hilfsspalten wieder löschen
.Columns("A:D").Delete Shift:=xlToLeft
End With
End Sub

Gruß Peter

Anzeige
AW: Sortierfunktion
04.02.2013 23:28:51
ludmila
Hallo Peter,
werde es morgen probieren.
Danke für Deine Antwort.
Gute Nacht
Gruß

AW: Sortierfunktion
05.02.2013 07:35:28
hary
Hallo
Auf die schnelle, sortieren aufgezeichnet mit Recorder.
Dim lZeile  As Long
Dim vTemp   As Variant
Dim iIndx   As Integer
Application.ScreenUpdating = False
With ThisWorkbook.Worksheets("Tabelle2") ' den Tabellenblattnamen ggf. anpassen
'        4 Spalten vor Spalte A mit den Daten einfügen
For iIndx = 1 To 4
.Columns("A:A").Insert Shift:=xlToRight
Next iIndx
.Columns("A:D").NumberFormat = "@"
'        ab Zeile 1 in jetzt Spalte 5 = E
For lZeile = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
If Trim$(.Range("E" & lZeile).Value)  "" Then
vTemp = Split(.Range("E" & lZeile).Value, ".")
For iIndx = 0 To UBound(vTemp)
.Cells(lZeile, iIndx + 1).Value = Format(vTemp(iIndx), "Standard")
Next iIndx
End If
For iIndx = 1 To 4
If .Cells(lZeile, iIndx) = "" Then .Cells(lZeile, iIndx).Value = 0
Next iIndx
Next lZeile
ActiveWorkbook.Worksheets("Tabelle3").Sort.SortFields.Add Key:=Range("A2:A17" _
), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortTextAsNumbers
With ActiveWorkbook.Worksheets("Tabelle3").Sort
.SetRange Range("A2:J17")
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
.Columns("A:D").Delete Shift:=xlToLeft
End With
Application.ScreenUpdating = True

gruss hary

Anzeige
AW: Sortierfunktion
05.02.2013 12:08:17
ludmila
Hallo Hary,
leider funktioniert es nicht.
Ich habe nun versucht den Haupttitel
1 = A 2 = B usw.
Aber auch das funktioniert nicht.
Jetzt fällt mit nichts mehr ein.
Danke, trotzdem für Deine Hilfe!
Gruß
Ludmila

AW: Sortierfunktion
05.02.2013 12:21:13
Peter
Hallo Ludmila,
nachdem ich den Sort auf dem PC eines Freundes eingefügt habe, hier mei (bei mir) funktionierender Code:
Public Sub Sortieren()
Dim WkSh     As Worksheet
Dim lLetzte  As Long
Dim lZeile   As Long
Dim vTemp    As Variant
Dim iIndx    As Integer
Set WkSh = ThisWorkbook.Worksheets("Tabelle1") ' den Tabellenblattnamen ggf. anpassen
Application.ScreenUpdating = False
With WkSh
lLetzte = .Cells(.Rows.Count, 1).End(xlUp).Row
'        4 Spalten vor Spalte A mit den Daten einfügen
For iIndx = 1 To 4
.Columns("A:A").Insert Shift:=xlToRight
Next iIndx
.Columns("A:D").NumberFormat = "@"
'        ab Zeile 1 in jetzt Spalte 5 = E
For lZeile = 1 To .Cells(.Rows.Count, 5).End(xlUp).Row
If Trim$(.Range("E" & lZeile).Value)  "" Then
vTemp = Split(.Range("E" & lZeile).Value, ".")
For iIndx = 0 To UBound(vTemp)
.Cells(lZeile, iIndx + 1).Value = Format(vTemp(iIndx), "0000")
Next iIndx
End If
'           leere Hilfs-Zellen mit 0000 auffüllen
For iIndx = 1 To 4
If .Cells(lZeile, iIndx) = "" Then .Cells(lZeile, iIndx).Value = "0000"
Next iIndx
Next lZeile
'        hier den Sort nach den ersten vier Spalten einbauen
.Sort.SortFields.Clear
.Sort.SortFields.Add Key:=Range("A1:A" & lLetzte), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
.Sort.SortFields.Add Key:=Range("B1:B" & lLetzte), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
.Sort.SortFields.Add Key:=Range("C1:C" & lLetzte), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
.Sort.SortFields.Add Key:=Range("D1:D" & lLetzte), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortTextAsNumbers
With WkSh.Sort
.SetRange Range("A1:E" & lLetzte)
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'          hier die 4 Hilfsspalten wieder löschen
.Columns("A:D").Delete Shift:=xlToLeft
End With
Application.ScreenUpdating = True
End Sub

Gruß Peter

Anzeige
AW: Sortierfunktion
05.02.2013 16:31:49
ludmila
Hallo,
Das Sortierergebnis ist so, sollte aber so sein.
1 1
1.1 1.1
1.1.10 1.1.10
1.1.10.1 1.1.10.1
1.1.10.2 1.1.10.2
1.2 100.1.12
1.2.100 100.1.12.1
1.2.100.1 100.1.12.2
2 1.2
2.1 1.2.100
2.1.12 1.2.100.1
2.1.12.1 2
2.1.12.2 2.1
100.1.12 2.1.12
100.1.12.1 2.1.12.1
100.1.12.2 2.1.12.2
Scheinbar ist dies nicht zu lösen.
Mir fällt nikchts mehr dazu ein oder wie ich dies beheben kann.
Danke!
Gruß
Ludmila

Links zu Excel-Dialogen

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige