Live-Forum - Die aktuellen Beiträge
Datum
Titel
28.03.2024 21:12:36
28.03.2024 18:31:49
Anzeige
Archiv - Navigation
1544to1548
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

Datensatz richtig sortieren

Datensatz richtig sortieren
13.03.2017 09:00:22
Jens
Hallo ich habe eine Problem mit dem Sortieren von Datensätzen.
Der nachfolgende Code funktioniert soweit.
Sub Sortieren()
Dim rSort As Range
With ActiveWorkbook.Worksheets("Aufstellung")
Set rSort = .Range(.Cells(13, 1), .Cells(.Rows.Count, 1).End(xlUp).Offset(, 1000))
With .Sort
.SortFields.Clear
.SortFields.Add Key:=Range("A13"), _
SortOn:=xlSortOnValues, Order:=xlAscending, _
DataOption:=xlSortNormal
.SetRange rSort
.Header = xlGuess
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
End With
End Sub

Das Problem ist aber dass ich Datensätze sortiere die z.b so aufgebaut sind
O1.ZU.1.19
O1.ZU.1.20
O1.ZU.1.21
wenn ich nun einen Datensatz dazufüge der so ausschaut
O1.ZU.1.2
wird die Sortierreihenfolge so ermittelt
O1.ZU.1.19
O1.ZU.1.2
O1.ZU.1.20
O1.ZU.1.21
Ich möchte aber dass diese so ermittelt wird.
O1.ZU.1.2
O1.ZU.1.19
O1.ZU.1.20
O1.ZU.1.21
Geht das ? Die Datensätze könne anders auch aufgebaut sein z.b Trennzeichen, aber entscheiden sind immer die letzten Zahlen. 2 ist halt kleiner wie 19 und muss dann auch zuerst kommen und nicht danach.
Hat jemand eine Idee?

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Datensatz richtig sortieren
13.03.2017 09:08:11
EtoPHG
hallo Jens,
Das 2 kleiner als 19 ist, ist numerisch richtig, aber textlich falsch!
Da deine Sortierbegriffe alles Texte sind, könntest du dies nur forcieren, wenn du eine Hilfsspalte bildest, welche nur die 'textlichen' Ziffern als Zahl enthalten (z.B. 119,102,120,121...). Anschliessend, nach dieser Hilfsspalte sortieren!
Gruess Hansueli
AW: Datensatz richtig sortieren
13.03.2017 09:10:19
Rainer
Hallo Jens,
am einfachsten wird sein, die letzten beiden Stellen in eine Hilfsspalte zu kopieren und dort sortieren?

=RECHTS()
Gruß,
Rainer
AW: Datensatz richtig sortieren
13.03.2017 09:33:59
Rene
Hallo,
vielleicht mit einer Hilfsspalte, nach der du sortieren kannst.
Das ist das, was mir auf die schnelle einfällt.
function zerlege(ByVal Strg as String) as Integer
Dim Var1 as String
Dim Var2 as String
Dim Var3 as String
Var1 = Left(Strg, P1 - 1)
Var2 = Mid(Strg, P1 + 1, P2 - 1 - P1)
Var3 = Mid(Strg, P2 + 1)
zerlege = CInt(Var3)
End Sub
LG Rene
Anzeige
AW: Datensatz richtig sortieren
13.03.2017 09:43:28
Jens
@Rene
Besten Dank.
Wie muss ich dann den Code anwenden?
Sind ja keine Bezüge zur Hilfsspalte drinnen? oder wie ist das gemeint?
AW: Datensatz richtig sortieren
13.03.2017 10:09:30
EtoPHG
Hallo Jens,
Dazu braucht es keinen Code. Das kannst du auch manuell (oder mit Aufzeichnung) erreichen mit:
Schlüsselspalte - Daten - Text in Spalten - Trennung nach Trennzeichen - Ziel erste leere Spalte nach dem Datenbereich. Anschliesend nach den neuen (Hilfs-)spalten von links nach rechts aufsteigend sortieren.
Gruess Hansueli
AW: Datensatz richtig sortieren
13.03.2017 10:36:52
Rene
Hi,
sry. Heute morgen noch ein bisschen im Halbschlaf ;)
Hier der bessere Code, der auch functioniert:

Function gebeZahlzurueck(ByVal Strg As String) As Integer
Dim spltString() As String
' Zerlegen des Eingabestrings in kleine substrings an den Zeichen "."
spltString = Split(Strg, ".")
' Casten des Substrings als Zahl und Rückgabewert speichern
gebeZahlzurueck = (spltString(2))
End Function
Ich würde vorschlagen, den Code als Formel in der Hilfsspalte zu verwenden. Oder anpassen und deine Sub einbauen.
LG Rene
Anzeige
AW: Datensatz richtig sortieren
13.03.2017 10:39:53
Rene

Function gebeZahlzurueck(ByVal Strg As String) As Integer
Dim spltString() As String
' Zerlegen des Eingabestrings in kleine substrings an den Zeichen "."
spltString = Split(Strg, ".")
' Casten des Substrings als Zahl und Rückgabewert speichern
gebeZahlzurueck = CInt(spltString(2)) ' Wichtig: CInt, damit eine Zahl zurückkommt
End Function

AW: Datensatz richtig sortieren
13.03.2017 09:46:11
Daniel
Hi
wenn in Texten, die Zahlen enthalten, diese Zahlen nach Zahl-sicht korrekt sortiert werden sollen und nicht nach Text-sicht, dann funktioniert das nur, wenn alle Zahlen die gleiche Anzahl Ziffern haben.
sind die Zahlen jedoch unterschiedlich lang, müsstest du mit führenden Nullen auffüllen:
O1.ZU.1.02 wird auch als Text vor O1.ZU.1.19 einsortiert.
Gruß Daniel
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige