Jump to content

eine Tabelle aufgrund mehrerer Spalten sortieren

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


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.