Daten innerhalb einer spalte mischen

  • Excel

Es gibt 1 Antwort in diesem Thema. Der letzte Beitrag () ist von petaod.

    Daten innerhalb einer spalte mischen

    hallo, ich habe nun folgendes Problem. Ich habe einen Code bei dem ich die Daten verschiedener Spalten unterschiedlich mischen kann.
    Jedoch macht das Makro alles nur einmal und dann hängt es.
    Ich möchte aber jedes mal, wenn ich das Makro aufrufe, dass sich die Daten mischen.
    Hier mein Code:

    Sub sortieren()Dim lngCLC As Long
    Dim lngListExist As Long
    Dim lngOC As Long
    Dim vListArr As Variant
    vListArr = Array("Arndt", "Denise", "Andreas", "Sebastian", "Bruno", "Sarah", "Bianca", "Getrud", "Meike", "Jürgen", "Hannes", "Dennis", "Lia", "Evelin", "Rite", "Rebekka", "Melanie", "Hubert", "Fritz", "Hans")
    lngListExist = Application.GetCustomListNum(vListArr)
    If lngListExist > 0 Then
    lngOC = lngListExist
    Else
    Application.AddCustomList listArray:=vListArr
    lngCLC = Application.CustomListCount
    lngOC = lngCLC
    End If
    'erste sortierung
    Range("A3").Sort Key1:=Range("a22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("a3").Sort Key1:=Range("a22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("b3").Sort Key1:=Range("b22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("b3").Sort Key1:=Range("b22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("c3").Sort Key1:=Range("c22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("c3").Sort Key1:=Range("c22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("d3").Sort Key1:=Range("d22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("d3").Sort Key1:=Range("d22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("e3").Sort Key1:=Range("e22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("e3").Sort Key1:=Range("e22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("f3").Sort Key1:=Range("f22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("f3").Sort Key1:=Range("f22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    Range("g3").Sort Key1:=Range("g22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("g3").Sort Key1:=Range("g22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom
    If lngListExist = 0 Then Application.DeleteCustomList ListNum:=lngCLC
    End SubIch bin über jede Hilfe Dankbar.

    heydj schrieb:

    Range("A3").Sort Key1:=Range("a22"), Order2:=xlDescending, Header:=xlGuess, OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom
    'zweite Sortierung
    Range("a3").Sort Key1:=Range("a22"), Order2:=xlAscending, Header:=xlGuess, OrderCustom:=lngOC, _
    MatchCase:=False, Orientation:=xlTopToBottom

    Da passt doch überhaupt nichts zusammen.
    Key und Order mit unterschiedlicher Nummerierung.
    Sortrange nur eine Zelle.
    Key ausserhalb des Sortrange.
    Spalten zum Sortieren aus der Tabelle gelöst.
    Da kann nur Chaos dabei rauskommen.


    Entweder:

    Visual Basic-Quellcode

    1. Range("A:L").Sort Key1:=Range("A1"), Order1:=xlDescending, Key2:=Range("B1"), Order2:=xlAscending

    oder gleich richtig:

    Visual Basic-Quellcode

    1. With Sort
    2. .SortFields.Clear
    3. .SortFields.Add Key:=Range("A:A"), SortOn:=xlSortOnValues, Order:=xlDescending, DataOption:=xlSortNormal
    4. .SortFields.Add Key:=Range("B:B"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
    5. .SetRange Range("A:L")
    6. .Header = xlYes
    7. .MatchCase = False
    8. .Orientation = xlTopToBottom
    9. .SortMethod = xlPinYin
    10. .Apply
    11. End With
    --
    If Not Program.isWorking Then Code.Debug Else Code.DoNotTouch
    --