Filtraggio di più colonne e filtraggio con espressioni regolari
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Riepilogo
Questa pagina fornisce una procedura macro di LibreOffice Basic che filtra due colonne e utilizza espressioni regolari. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.
Descrizione
La procedura macro di seguito illustra un filtro che filtra due colonne e utilizza espressioni regolari. Nota che il metodo filter viene chiamato su un intervallo piuttosto che sul suo foglio in questo esempio.
Ad esempio, la macro seguente filtra un foglio di valutazione della classe nelle celle $Foglio1.A1:H11 in base ai punteggi del test n. 1 <= 90% e ai nomi degli studenti che iniziano con "B". Il foglio di calcolo collegato contiene tale foglio di valutazione.
Codice
Sub SimpleRangeFilter()
Dim oSheet ' Foglio da filtrare.
Dim oRange ' Intervallo da filtrare
Dim oFilterDesc ' Descrizione del filtro
Dim oFields(1) As New com.sun.star.sheet.TableFilterField
oSheet = ThisComponent.getSheets().getByIndex(0)
oRange = oSheet.getCellRangeByName("A1:H11")
REM Se l'argomento è Vero, crea un
REM filtro descrittore vuoto
oFilterDesc = oRange.createFilterDescriptor(True)
REM Imposta un campo per visualizzare le celle con contenuto che
REM inizia con la lettera B.
With oFields(0)
.Field = 0 ' Filtra la colonna A (Nomi degli studenti).
.IsNumeric = False ' Usa una stringa, non un numero.
.StringValue = "b.*" ' Ogni nome che inizia con una B.
.Operator = com.sun.star.sheet.FilterOperator.EQUAL
End With
REM Imposta un campo che richieda almeno una delle condizioni.
REM Questa nuova condizione richiede un valore inferiore a o
REM uguale a 90.
With oFields(1)
.Connection = com.sun.star.sheet.FilterConnection.OR
.Field = 6 ' Filtrare la colonna G (gradi del test #1).
.IsNumeric = True ' Usa un numero
.NumericValue = 90 ' Punteggi inferiori a 90
.Operator = com.sun.star.sheet.FilterOperator.LESS_EQUAL
End With
oFilterDesc.setFilterFields(oFields())
oFilterDesc.ContainsHeader = True
oFilterDesc.UseRegularExpressions = True
oRange.filter(oFilterDesc)
End Sub
Questo Foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice.