eine Tabelle aufgrund einer Spalte sortieren
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
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.