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

Größensortierung

Größensortierung
Andreas
Hallo,
ich möchte in Zeilen nach Größe sortieren und komm leider nicht damit zurecht.
Habs auch schon über Makrorekorder probiert. Funzt nicht, bin kein VBA ler.
Hier die Vorgabe:
Test
 DEFG
3795-012.25-012.05-010.03 
3805-012.y5-010.035-012.05-020.11
3815-013.15-012.05-010.2 
3825-013.15-010.035-012.0 
3835-013.15-010.2  
Diese Tabelle soll in der Zeile von klein nach groß sortiert werden. In einigen Fällen kann nach dem Punkt anstatt einer Zahl ein Buchstabe stehen. Hier ist es egal, ob die Zahl als Wert vor der O oder nach der 9 gestellt wird.. Vielen Dank für eure Hilfe. Gruß, Andreas

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

Betreff
Benutzer
Anzeige
AW: Größensortierung
Nepumuk
Hallo Andreas,
mit deinem Satz: " Hier ist es egal, ob die Zahl als Wert vor der O oder nach der 9 gestellt wird" komme ich nicht zurecht. Kannst dum mal ein Beispiel machen mit Ist - Soll?
Gruß
Nepumuk
AW: Größensortierung
Andreas
Hallo Nepomuk,
das Ergebnis soll so aussehen:
 BCDE
55-010.035-012.05-012.2 
65-010.035-012.05-012.y5-020.11
75-010.25-012.05-013.1 
85-010.035-012.05-013.1 
95-010.25-013.1  
Mit dem Buchstaben nach dem Komma war gemeint, daß es egal ist, ob als Sortierung 5-012.0 / 5-012.y oder 5-012.y / 5-012.0 rauskommt, d.h. in der Sortierreihenfolge kann der Buchstabe vor 0-9 kommen oder danach. Gruß Andreas
Anzeige
AW: Größensortierung
Nepumuk
Hallo Anderas,
also nur nach den 3 Zeichen hinter dem Bindestrich wird sortiert?
Gruß
Nepumuk
AW: Größensortierung
Andreas
Hallo Nepomuk,
Sortierung so wie in der Tabelle, also nach gesamtem Zellinhalt. Der Hinweis mit dem Buchstaben war nur gedacht, falls ein Makro oder eine Funktion damit irgendwelche Probleme hat, daß anstelle einer Zahl plötzlich ein Buchstabe auftaucht.
Gruß Andreas
AW: Größensortierung
Nepumuk
Hallo Andreas,
die Zeile, in der sich die aktive Zelle befindet wir sortiert:
Option Explicit Public Sub Sort_Zeile() Dim intSpalte As Integer, strArray() As String ReDim strArray(1 To Cells(ActiveCell.Row, 256).End(xlToLeft).Column) For intSpalte = 1 To UBound(strArray) strArray(intSpalte) = Cells(ActiveCell.Row, intSpalte) Next Call sortieren(1, UBound(strArray), strArray) For intSpalte = 1 To UBound(strArray) Cells(ActiveCell.Row, intSpalte) = strArray(intSpalte) Next End Sub Private Sub sortieren(intUgrenze As Integer, intOgrenze As Integer, strArray() As String) Dim intIndex1 As Integer, intIndex2 As Integer, strElement As String, strZwischenspeicher As String intIndex1 = intUgrenze intIndex2 = intOgrenze strZwischenspeicher = strArray(((intUgrenze + intOgrenze) / 2) \ 1) Do Do While strArray(intIndex1) < strZwischenspeicher intIndex1 = intIndex1 + 1 Loop Do While strZwischenspeicher < strArray(intIndex2) intIndex2 = intIndex2 - 1 Loop If intIndex1 <= intIndex2 Then strElement = strArray(intIndex1) strArray(intIndex1) = strArray(intIndex2) strArray(intIndex2) = strElement intIndex1 = intIndex1 + 1 intIndex2 = intIndex2 - 1 End If Loop Until intIndex1 > intIndex2 If intUgrenze < intIndex2 Then Call sortieren(intUgrenze, intIndex2, strArray) If intIndex1 < intOgrenze Then Call sortieren(intIndex1, intOgrenze, strArray) End Sub
Gruß
Nepumuk
Anzeige
AW: Größensortierung
Andreas
Hallo Nepomuk,
danke erst mal für die Mühe.
Kann das Makro auch erweitert werden, damit alle markierten Zeilen sortiert werden?
Ich habe ca. 20.000 Datensätze und das Makro funktioniert ja nur für die aktive Zelle, oder?
Wenn ich das richtig verstehe, hätte ich aus deinem Makro dasselbe Ergebnis wie in der Funktion "Daten/Sortieren", nur eben nach Zeilen.
Gruß Andreas
AW: Größensortierung
Nepumuk
Hallo Andreas,
nein, die sortierung erfolgt nach dem Ascii - Code. Das heist eine 2 ist größer als eine 10. Um das zu berrücksichtigen, müsste ich die Sortierroutine entsprechend anpassen.
Um alle Zeilen, beginnend mit der ersten zu sortieren, verwende folgendes, geändertes Makro:

Public Sub Sort_Zeile()
Dim intSpalte As Integer, lngZeile As Long, strArray() As String, intAusgabespalte As Integer
Application.ScreenUpdating = False
For lngZeile = 1 To ActiveSheet.UsedRange.Rows.Count
ReDim strArray(1 To Cells(lngZeile, 256).End(xlToLeft).Column)
For intSpalte = 1 To UBound(strArray)
strArray(intSpalte) = Cells(lngZeile, intSpalte)
Next
Call sortieren(1, UBound(strArray), strArray)
intAusgabespalte = 0
Rows(lngZeile).ClearContents
For intSpalte = 1 To UBound(strArray)
If strArray(intSpalte) <> "" Then
intAusgabespalte = intAusgabespalte + 1
Cells(lngZeile, intAusgabespalte) = strArray(intSpalte)
End If
Next
Next
Application.ScreenUpdating = True
End Sub


Gruß
Nepumuk
Anzeige
AW: Größensortierung
Andreas
Danke Nepumuk,
das wars, was ich gesucht habe.
Warst ne große Hilfe, hat mir viel Mühe erspart!!!
Gruß und einen schönen Tag noch.
Andreas

300 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige