Ordina una tabella usando una colonna

From The Document Foundation Wiki
< Macros‎ | Calc
Jump to navigation Jump to search
This page is a translated version of the page Macros/Calc/ba023 and the translation is 100% complete.
Other languages:
English • ‎español • ‎italiano

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.

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.