Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

Daten sortieren in String nach zeichen Array

Forumthread: Daten sortieren in String nach zeichen Array

Daten sortieren in String nach zeichen Array
chris
Hallo VBa Experten, ich muss euch heute mal wieder um Hilfe bitten.
ich habe einen Code(unten) dieser steckt in einer schleife (xx)
in dieser Schleifen füge ich namen hinzu.
In jeder zelle steht ein name und ein kürzel.Das kürzel kommt nach dem 2 leerzeichen.
Also z.b
"Christian" "Nachname" "AKürzel" "usw..."
"Michael" "Nachname" "FKürzel" "usw... "
"Thomas" "Nachname" "BKürzel" "usw... "
Jetzt füge ich diese in eine Variable ein mit einem zeilenumbruch nach jeder zeile chr(10) (siehe unten)
leider sind die Daten aber nicht so sortiert wie ich das gerne hätte.Da ist auch schon das Problem.
Es soll nicht nach dem namen sortiert werden sondern nach dem Kürzel.Also nach Kürzel.
Wie könnte ich das in VBA umsetzen ?
Also das in der variable Unterschriften die ganzen Namen sortiert nach kürzel stehen.
Unterschriften = Unterschriften & Chr(10) & User.Worksheets("daten").Cells(Zeile_Db, xx)
ich hoffe ihr könnt mir helfen.
Würde mich sehr freuen.
Danke
Gruß Chris
Anzeige
AW: Daten sortieren in String nach zeichen Array
06.10.2009 17:21:51
Tino
Hallo,
bin mir nicht sicher ob Du es so meinst, drücke auf den Button in der Tabelle.
https://www.herber.de/bbs/user/64914.xls
Gruß Tino
AW: Daten sortieren in String nach zeichen Array
06.10.2009 19:57:22
chris
Tino absolut genau das was ich gesucht habe !!!!!!!!
Vielen Dank und schönen Abend noch !
Anzeige
AW: Noch einmal offen Tino ?! danke
07.10.2009 08:23:03
chris
Hallo Tino,
wie schon gestern gesagt klappt es perfekt.
Nur ein problem gibt es noch.
ich habe die Namen und Kürzel schon in einem Array und nicht in einer Tabelle.
das Array sieht so aus:
vor1 Michael Dkürzel1
vor2 Guenter Bkürzel2
usw..
Und das Array ist eigentlich kein Array sondern ein String.
Aber in dem String sind schon nach jedem Kürzel zeilenumbrüche also chr(10)
Wie kann ich dein sortier Makro auf diesen String anwenden ?
Würde mich noch einmal sehr über Hilfe freuen.
Vielen dank
Anzeige
AW: Noch einmal offen Tino ?! danke
07.10.2009 15:30:25
Tino
Hallo,
versuche mal und ersetzen den Code in Modul2 durch diesen.
Sub SortiereString()
Dim Bereich As Range
Dim meAr, tempAr(), TextAr
Dim A As Long, AA As Long
Dim strMeinText As String

strMeinText = "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Christian Nachname AKürzel" & Chr(10) & _
              "Michael Nachname FKürzel" & Chr(10) & _
              "Thomas Nachname BKürzel"

meAr = Split(strMeinText, Chr(10))

Redim Preserve tempAr(Ubound(meAr), 0)

For A = 0 To Ubound(meAr)
    If InStr(meAr(A), " ") > 0 Then
        TextAr = Split(meAr(A), " ")
        For AA = Lbound(TextAr) To Ubound(TextAr)
            If AA > Ubound(tempAr, 2) Then Redim Preserve tempAr(Ubound(tempAr), AA)
            tempAr(A, AA) = TextAr(AA)
        Next AA
    End If
Next A

prcQuickSort Lbound(tempAr), Ubound(tempAr), 2, True, tempAr

strMeinText = ""

For A = 0 To Ubound(tempAr)
   
    For AA = 0 To Ubound(tempAr, 2)
     strMeinText = strMeinText & tempAr(A, AA)
     If AA < Ubound(tempAr, 2) Then strMeinText = strMeinText & " "
    Next AA
    If A < Ubound(tempAr) Then strMeinText = strMeinText & Chr(13)
Next A

 MsgBox strMeinText
End Sub
Gruß Tino
Anzeige
AW: Daten sortieren in String nach zeichen Array
06.10.2009 19:42:02
Chris
Servus Namensvetter,
ich hab hier auch noch was (etwas anders als bei Tino und mit Erklärung), aber ich denke die Lösung von Tino ist sehr gut.
https://www.herber.de/bbs/user/64916.xls
Makro mit Alt+F8 ausführen.
Gruß
Chris
Anzeige
AW: Daten sortieren in String nach zeichen Array
06.10.2009 19:58:41
chris
Hallo Chris,
auch Dir noch einmal vielen dank !
gruß Chris :)
;
Anzeige
Anzeige

Infobox / Tutorial

Daten sortieren in VBA-Strings


Schritt-für-Schritt-Anleitung

Um einen String in VBA nach einem bestimmten Kürzel zu sortieren, kannst Du den folgenden Code verwenden. Dieser Code geht davon aus, dass die Daten bereits in einem String gespeichert sind, wobei die einzelnen Einträge durch Zeilenumbrüche (Chr(10)) getrennt sind.

  1. Öffne den VBA-Editor (Alt + F11).
  2. Füge ein neues Modul hinzu.
  3. Kopiere den folgenden Code in das Modul:
Sub SortiereString()
    Dim meAr, tempAr(), TextAr
    Dim A As Long, AA As Long
    Dim strMeinText As String

    strMeinText = "Christian Nachname AKürzel" & Chr(10) & _
                  "Michael Nachname FKürzel" & Chr(10) & _
                  "Thomas Nachname BKürzel"

    meAr = Split(strMeinText, Chr(10))
    ReDim Preserve tempAr(UBound(meAr), 0)

    For A = 0 To UBound(meAr)
        If InStr(meAr(A), " ") > 0 Then
            TextAr = Split(meAr(A), " ")
            For AA = LBound(TextAr) To UBound(TextAr)
                If AA > UBound(tempAr, 2) Then ReDim Preserve tempAr(UBound(tempAr), AA)
                tempAr(A, AA) = TextAr(AA)
            Next AA
        End If
    Next A

    prcQuickSort LBound(tempAr), UBound(tempAr), 2, True, tempAr

    strMeinText = ""
    For A = 0 To UBound(tempAr)
        For AA = 0 To UBound(tempAr, 2)
            strMeinText = strMeinText & tempAr(A, AA)
            If AA < UBound(tempAr, 2) Then strMeinText = strMeinText & " "
        Next AA
        If A < UBound(tempAr) Then strMeinText = strMeinText & Chr(13)
    Next A

    MsgBox strMeinText
End Sub
  1. Führe das Makro mit Alt + F8 aus.

Häufige Fehler und Lösungen

  • Fehler: "Typkonflikt" beim Ausführen des Codes.

    • Lösung: Stelle sicher, dass die Variablen korrekt deklariert sind und dass die Arrays die richtigen Dimensionen haben.
  • Fehler: Die Ausgabe ist nicht sortiert.

    • Lösung: Überprüfe, ob der Parameter in prcQuickSort richtig gesetzt ist, um nach dem richtigen Index zu sortieren.

Alternative Methoden

Eine alternative Methode zum Sortieren von Strings kann die Verwendung von Excel-Funktionen wie SORT in neueren Excel-Versionen sein. Du kannst die Daten in eine Excel-Tabelle einfügen und die Funktion direkt darauf anwenden, um eine schnelle Sortierung nach Kürzeln zu erreichen.


Praktische Beispiele

  1. Beispiel 1: Wenn Du einen String hast, der Daten für mehrere Benutzer enthält, wie folgt:

    "John Doe AKürzel" & Chr(10) & "Jane Smith BKürzel"

    Der oben gezeigte VBA-Code wird die Einträge nach dem Kürzel sortieren.

  2. Beispiel 2: Wenn Du bereits ein Array mit Namen und Kürzeln hast, kannst Du den Code so anpassen, dass er das Array direkt verarbeitet.


Tipps für Profis

  • Verwende Dictionary: Wenn Du mit großen Datenmengen arbeitest, kann die Verwendung eines Dictionary-Objekts die Performance verbessern.
  • Optimierung: Achte darauf, dass die Sortiermethode effizient ist, insbesondere bei sehr großen Arrays.
  • Fehlermanagement: Implementiere Fehlerbehandlungsroutinen, um unerwartete Eingaben zu verwalten.

FAQ: Häufige Fragen

1. Kann ich diesen Code in Excel 2010 verwenden?
Ja, der Code ist mit Excel 2010 und neueren Versionen kompatibel.

2. Was mache ich, wenn die Daten nicht im richtigen Format vorliegen?
Stelle sicher, dass die Daten im richtigen Format sind, d.h. dass sie durch Zeilenumbrüche getrennt sind und die Kürzel korrekt positioniert sind. Du kannst auch vor der Sortierung eine Funktion einfügen, die die Daten formatiert.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige