eine Tabelle aufgrund mehrerer Spalten sortieren

    From The Document Foundation Wiki
    < Macros‎ | Calc
    This page is a translated version of the page Macros/Calc/ba024 and the translation is 100% complete.


    Other languages:

    Zusammenfassung

    Diese Seite zeigt ein LibreOffice Basic Makro, das eine Tabelle aufgrund der Daten in mehreren Spalten sortiert. Es ist ein Beispiel aus Kapitel 13 ("Calc als Datenbank") aus dem Handbuch zu Calc 7.0.

    Beschreibung

    Ein Bereich kann in einem Makro nach bis zu drei Spalten oder Zeilen sortiert werden. Nach zusätzlichen Spalten oder Zerilen zu sortieren ist genauso einfach wie extra Sortierfelder in die Sortierbeschreibung hinzuzufügen. Das folgende Makro verwendet das Notenblatt in den Zellen A1:H11 des verlinkten Tabellenblattes um zu zeigen, wie nach zwei Spalten sortiert wird. Die Einträge werden erst nach den Ergebnissen des Quiz #1 und dann nach den Ergebnissen aus Quiz #2 in aufsteigender Reihenfolge sortiert.

    Code

    Sub SortByQuizScores
      Dim oSheet
      Dim oRange
      Dim oSortFields(1) as new com.sun.star.util.SortField
      Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
    
      oSheet = ThisComponent.Sheets(0)
    
      REM den zu sortierenden Bereich bestimmen
      oRange = oSheet.getCellRangeByName("A1:H11")
    
      REM Nach Quiz #1 sortieren
      oSortFields(0).Field = 4
      oSortFields(0).SortAscending = True
      oSortFields(0).FieldType = com.sun.star.util.SortFieldType.NUMERIC
    
      REM Nach Quiz #2 sortieren
      oSortFields(1).Field = 5
      oSortFields(1).SortAscending = True
      oSortFields(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
    
      REM die zu verwendenden Sortierfelder bestimmen
      oSortDesc(0).Name = "SortFields"
      oSortDesc(0).Value = oSortFields()
      
      REM Den Bereich jetzt sortieren!
      oRange.Sort(oSortDesc())
    End Sub

    Dieses Calc Tabellenblatt enthält den obigen LibreOffice Basic Code.