eine Tabelle aufgrund mehrerer Spalten 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 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.