Microsoft Excel

Herbers Excel/VBA-Archiv

Array Sortieren | Herbers Excel-Forum


Betrifft: Array Sortieren von: Andreas
Geschrieben am: 05.01.2010 13:56:11

Hallo ich habe ein Array das ziemlich willkürlich beschrieben wird es hat folgende form

Type Punkte_Array_Type
    pixels As Integer
    nullstelle As Boolean
    ...
    ...
    ...
End Type

Dim Punkte_Array(100) As Punkte_Array_Type

dieses Array soll jetzt komplett sortiert werden ach pixels. also soll Punkte_Array(0) den kleinsten Pixels wert haben.

gibt es dafür schon eine vorgefertigte funktion oder hat jemand grad eine Parat?

Grüße Andi

  

Betrifft: AW: Array Sortieren von: Andreas
Geschrieben am: 05.01.2010 14:17:51

hab schnell ne funktion geschrieben *DONE*


  

Betrifft: Punkte-Array nach Element 'Pixels' Sortieren von: NoNet
Geschrieben am: 05.01.2010 14:32:38

Hallo Andi,

hier ein kleines Beispiel - Die Werte "Pixels" des Arrays werden hier zuvor zufällig mit WErten zwischen 0 und 1000 (bzw. 999) befüllt, dann sortiert und dann ausgegeben :

Option Explicit

Type Punkte_Array_Type
    pixels As Integer
    nullstelle As Boolean
End Type


Sub PunkteArraySortieren()
    Dim Punkte_Array(100) As Punkte_Array_Type
    Dim intS As Integer, intT As Integer, tmpPA As Punkte_Array_Type
    
    'Array zufällig befüllen
    For intT = LBound(Punkte_Array) To UBound(Punkte_Array) 'Alle Elemente des Arrays
        'Wert "Pixels" zufällig mit Werten  zw. 0 - 1000 befüllen
        Punkte_Array(intT).pixels = Rnd() * 1000
        Punkte_Array(intT).nullstelle = Rnd() > 0.5 'Boole'scher Wert : TRUE oder FALSE
    Next
    
    'Array nach "Pixels" sortieren :
    For intT = LBound(Punkte_Array) To UBound(Punkte_Array) 'Alle Elemente des Arrays
        For intS = LBound(Punkte_Array) To intT
            If Punkte_Array(intS).pixels > Punkte_Array(intT).pixels Then
                tmpPA = Punkte_Array(intS)
                Punkte_Array(intS) = Punkte_Array(intT)
                Punkte_Array(intT) = tmpPA
            End If
        Next
    Next
    
    'Array nach "Pixels" sortiert in Spalte A ausgeben (Nullstelle in Spalte B)
    For intT = LBound(Punkte_Array) To UBound(Punkte_Array) 'Alle Elemente des Arrays
        Cells(intT + 1, 1) = Punkte_Array(intT).pixels
        Cells(intT + 1, 2) = Punkte_Array(intT).nullstelle
    Next
End Sub
Gruß, NoNet


Beiträge aus den Excel-Beispielen zum Thema "Array Sortieren"