eine Tabelle aufgrund einer Spalte sortieren

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


    Other languages:

    Zusammenfassung

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

    Beschreibung

    In einem Calc Makro werden Daten in einem Bereich mit der Methode sort() auf dem Objektbereich sortiert. Wenn eine Sortieroperation auf einem Bereich ausgeführt wird, wird der sort Methode ein Eigenschaftenfeld namens Sortierbeschreibung übergeben. In den Eigenschaften dieser Beschreibung sind Sortierfelder. Diese Strukturen sagen Calc, wie der Bereich nach den Daten aus den beiden Zeilen oder Spalten zu sortieren sind.

    Als Beispiel sortiert das folgende Makro ein Notenblatt in den Zellen $Tabelle1.A1:H11 nach der Durchschnittsnote in absteigender Folge. Das verlinkte Tabellenblatt enthält ein solches Notenblatt. Achtung: Der Indexwert Field aus der Variable Sortierfeld startet relativ zum ausgewählten Bereich. Wenn im Beispiel der ausgewählte Bereich C1:H11 ist, hat die Spalte C den Feldindex 0.


    Code

    Sub SortAverageGrade
      Dim oSheet
      Dim oRange
      Dim oSortFields(0) 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 dem Durchschnittswert in absteigender Reihenfolge sortieren
      oSortFields(0).Field = 7
      oSortFields(0).SortAscending = FALSE
    
      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.