Variablen sortieren

M

MeisterR

Hallo erstmal

also ich hab folgendes problem:
Ich habe variablen
hand( x , 1 ) ist string
und hand( x , 2 ) ist integer
x=1-20

ich möchte nun
hand( 1 , 1) hand ( 1 , 2)
hand( 2 , 1) hand (2 , 2)
.... zuordnen

hand ( x, 2 ) soll dann aufsteigend sortiert werden
und danach sollen (nur) die dazugehörigen hand ( x , 1) werte ausgegeben werden

kann mir bitte jemand helfen ich hab jetzt schon in 3 foren keine hilfe bekommen ich hoffe man kann verstehen was ich möchte wenn nicht einfach nochmal nachhaken
 
ev. gibts schönere Lösungen Ich habs einfach mal auf die schnelle mit den mir bekannten Funtionen umgesetzt.

Visual Basic:
Public Sub bla()
    Const C_ARR_SIZE = 20
    Dim hand(C_ARR_SIZE, 2), temp(C_ARR_SIZE), h2(C_ARR_SIZE) As String
    Dim index As Long
    Dim arrSize As Long
    
    'Testdaten erstellen
    For i = 1 To C_ARR_SIZE
        For j = 1 To 2
            hand(i, j) = Format(Rnd * 100, "000") & "::" & i & "::" & j
        Next j
    Next i

    arrSize = UBound(hand)

    ' Nur die erste Dimension auslesen
    For i = 1 To arrSize
        h2(i) = hand(i, 2)
    Next i

    ' temp-Array übernehmen
    tmp = h2

    ' Sortieren
    Call ArrayQuickSort(tmp)

    Debug.Print "----------------------"
    Debug.Print "- Sortierte Spalte 2 -"
    Debug.Print "----------------------"
    
    ' Anhand des sortierten Array die Werte von den entsprechenden
    ' anderen Dimension übernehmen
    For i = 1 To arrSize
        Debug.Print tmp(i)
        ' Index in dem Original-Array bestimmen
        index = ArrayIndex(tmp(i), h2)
        ' Werte aus der ersten Dimension auselsen
        tmp(i) = hand(index, 1)
    Next i

    Debug.Print "----------------------"
    Debug.Print "- Sortierte Spalte 1 -"
    Debug.Print "----------------------"
    
    'Ausgabe
    For i = 1 To arrSize
        Debug.Print tmp(i)
    Next i

End Sub

Für die Sortierung und den array_index habe ich die folgende Funktionssammlung verwendet
http://wiki.yaslaw.info/wikka/VbaArrayFunctions
 
sorry ich habe ein problem ich habe gehofft ich bekomme den rest selber hin aber das wird nichts.

ich hoffe du hilfst mir trotzdem nochmal, ich weiß ihr programmierer haltet nicht die masse davon sowas mit excel zu verknüpfen, aber kannst du mir auch noch zeigen wie die ausgabe ausehen würde wenn ich die ausgabe in excel in spalte a machen wöllte?
 
Visual Basic:
Sheet1.Range("A1:A21").Value = Application.WorksheetFunction.Transpose(tmp)
 
Zurück