mehrere Spalten filtern und reguläre Ausdrücke verwenden
TDF LibreOffice Document Liberation Project Community Blogs Weblate Nextcloud Redmine Ask LibreOffice Spende
Zusammenfassung
Diese Seite zeigt ein LibreOffice Basic Makro, das nach zwei Spalten filtert und reguläre Ausdrücke verwendet. Es ist ein Beispiel aus Kapitel 13 ("Calc als Datenbank") aus dem Handbuch zu Calc 7.0.
Beschreibung
Das folgende Makro zeigt einen Filter, der nach zwei Spalten filtert und reguläre Ausdrücke zeigt. Die Methode filter wird in diesem Beispiel auf einen Bereich und nicht auf das ganze Tabellenblatt angewendet.
Als Beispiel filtert das Makro ein Notenblatt in den Zellen $Tabelle1.A1:H1 nach Ergebnissen aus Test #1 <= 90 % und Schülernamen, die mit "B" beginnen. Die verlinkte Tabelle enthält ein solches Notenblatt.
Code
Sub SimpleRangeFilter()
Dim oSheet ' zu filterndes Tabellenblatt
Dim oRange ' zu filternder Bereich
Dim oFilterDesc ' Filterbeschreibung
Dim oFields(1) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.getSheets().getByIndex(0)
oRange = oSheet.getCellRangeByName("A1:H11")
REM Wenn das Argument TRUE ist, wird eine
REM leere Filterbeschreibung erzeugt.
oFilterDesc = oRange.createFilterDescriptor(True)
REM Ein Feld einrichten, um Zellen mit Inhalt anzuzeigen, die
REM mit dem Buchstaben B beginnen.
With oFields(0)
.Field = 0 ' Spalte A (Schülernamen) filtern.
.IsNumeric = False ' Es wird ein Text verwendet, keine Zahl.
.StringValue = "b.*" ' Jeder Name, der mit B beginnt.
.Operator = com.sun.star.sheet.FilterOperator.EQUAL
End With
REM Ein Feld einrichten, das mindestens einen der obigen Bedingungen erfüllt.
REM Diese neue Bedingung erfordert einen Wert kleiner
REM oder gleich 90.
With oFields(1)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 6 ' Spalte G (Noten aus Test #1) filtern.
.IsNumeric = True ' Es werden Zahlen kleiner
.NumericValue = 90 ' als 90 verwendet.
.Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL
End With
oFilterDesc.setFilterFields(oFields())
oFilterDesc.ContainsHeader = True
oFilterDesc.UseRegularExpressions = True
oRange.filter(oFilterDesc)
End Sub
Dieses Calc Tabellenblatt enthält den obigen LibreOffice Basic Code.