Ordina una tabella usando una colonna
TDF LibreOffice Document Liberation Project Blog comunitari Weblate Nextcloud Redmine Ask LibreOffice Donazione
Riepilogo
Questa pagina fornisce una procedura macro di LibreOffice Basic che ordina una tabella in base ai valori in una colonna. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.
Descrizione
In una macro di Calc, i dati all'interno di un intervallo vengono ordinati chiamando il metodo sort() sull'oggetto intervallo. Quando viene chiamata un'operazione di ordinamento su un intervallo, un array di proprietà noto come descrittore di ordinamento viene passato al metodo sort. All'interno delle proprietà di un descrittore sono contenuti i "campi di ordinamento", che sono strutture che informano Calc su come ordinare un intervallo in base ai dati contenuti in una delle sue righe o colonne.
Ad esempio, la macro seguente ordina un foglio di valutazione della classe nelle celle $Sheet1.A1:H11 in base al voto medio in ordine decrescente. Il foglio di calcolo collegato contiene tale foglio di valutazione. Attenzione: Il valore dell'indice Field della variabile SortField inizia con riferimento relativo all'intervallo selezionato. Per esempio, se l'intervallo selezionato comprende C1:H11, la colonna C ha come indice "field" 0.
Codice
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 Imposta l'intervallo su cui ordinare
oRange = oSheet.getCellRangeByName("A1:H11")
REM Ordina per il campo Voto medio nell'intervallo in ordine decrescente
oSortFields(0).Field = 7
oSortFields(0).SortAscending = FALSE
REM Imposta i campi di ordinamento da utilizzare
oSortDesc(0).Name = "SortFields"
oSortDesc(0).Value = oSortFields()
REM Ora ordina l'intervallo!
oRange.Sort(oSortDesc())
End Sub
Questo Foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice.