[Excel] Tabelle nach mehreren Kriterien sortieren

mc_gulasch

Erfahrenes Mitglied
Moin Forum-Leuts,

ich hab ne Tabelle der Form:
Code:
a b   cdga xxx xxx
a bb  cda xxx xxx
a bbb cda xxx xxx
...
die nach folgenden Kriterien sortiert werden soll:
1. 1.Spalte (hier das 'a')
2. ges. Länge der drei Spalten zusammen
3. Länge der zweiten Spalte
Die letzten zwei Spalten sind irrelevant, sollten aber bei der Sortierung (natürlich) mitgenommen werden.
dementsprechend wäre dann obige Tabelle folgendermaßen sortiert:
Code:
a bbb cda  (a,ges. Länge: 7)
a bb  cda  (a,ges. Länge: 6,Länge 2.Sp.:2)
a b   cdga (a,ges. Länge: 6,Länge 2.Sp.:1)
Ich hätte schon nach etwas ähnlichem wie den in C (und bestimmt noch was weiß ich wo) implemetierten qsort() mit eigener Vergleichsfunktion gesucht, aber nix gefunden.
Kann mir wer helfen? (Ich kann VBA)

Danke schonmal.
 
Hai,

mc_gulasch hat gesagt.:
Kann mir wer helfen? (Ich kann VBA)

Danke schonmal.

Wenn das heissen soll, daß du nach einer VBA-Lösung suchst, kann ich dir nicht weiterhelfen.
Ansonsten : Füge einfach zwei zusätzliche Spalten ein, oder häng sie an.
1. Spalte = =LÄNGE(A1)+LÄNGE(B1)+LÄNGE(C1) für die Gesamtlänge
2. Spalte = =LÄNGE(B1) für die Länge der Spalte 2

Dann Daten => Sortieren nach Spalte 1 (die a`s) , Spalte X (Gesamtlänge) , Splate XX (Länge Spalte b)

Ciao Stefan
 
Und genau DAS wollte ich. Super Sache. Klappt, flutscht, fasst.
Vielen Dank, rock on!

BTW: Gibt´s was neues von Sven Uwe? Hab schon lang nix mehr gehört ;-)

//edit

Ich bräuchte nochmal deine Hilfe, vielleicht kannst du mir nochmal helfen:
Ich hab jetzt eben diese 7 Spalten, die ich als csv-Datei abspeichern will, allerdings, sollen die ersten drei Spalten durch Tabstops getrennt sein und der Rest dann durch $, also
Code:
a b c$d$e$f$g
Geht das? Wenn ja, weiß wer wie?

//edit

//edit2

Hat sich erledigt, ich hab mir für das Problem ein kleine VBA-Prozedur geschrieben:
Code:
Sub make_csv()
    Open "C:\Arbeit\Files\file_sorted" For Append As #2
    For i = 1 To 1798
        out = Range("A" & i).Value & Chr(9) & Range("B" & i).Value & Chr(9)
        For j = 67 To 70
            out = out & Range(Chr(j) & i).Value & Chr(36)
        Next
    Print #2, out
      
        
    Next
    Close #2
End Sub

hang loose!
//edit2
 
Zuletzt bearbeitet:
Zurück