Ordina una tabella utilizzando più colonne

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

Questa pagina fornisce una procedura macro di LibreOffice Basic che ordina una tabella in base ai valori in più colonne. È un esempio tratto dal Capitolo 13 ("Calc come database") della Guida 7.0 Calc.

Descrizione

Un intervallo può essere ordinato utilizzando fino a tre colonne o righe in una macro. Ordinare con colonne o righe extra è facile come aggiungere campi di ordinamento extra a un descrittore di ordinamento. La macro seguente utilizza il foglio di valutazione della classe nelle celle $Foglio1.A1:H11 del foglio di calcolo collegato per illustrare come ordinare in base a due colonne. I record sono ordinati in ordine crescente, prima per i punteggi del Quiz #1 e poi per i punteggi del Quiz #2.

Codice

 1Sub SortByQuizScores
 2  Dim oSheet
 3  Dim oRange
 4  Dim oSortFields(1) as new com.sun.star.util.SortField
 5  Dim oSortDesc(0) as new com.sun.star.beans.PropertyValue
 6
 7  oSheet = ThisComponent.Sheets(0)
 8
 9  REM Imposta l'intervallo su cui ordinare
10  oRange = oSheet.getCellRangeByName("A1:H11")
11
12  REM Ordina in base al campo Quiz #1 nell'intervallo
13  oSortFields(0).Field = 4
14  oSortFields(0).SortAscending = True
15  oSortFields(0).FieldType = com.sun.star.util.SortFieldType.NUMERIC
16
17  REM Ordina in base al campo Quiz #2 nell'intervallo
18  oSortFields(1).Field = 5
19  oSortFields(1).SortAscending = True
20  oSortFields(1).FieldType = com.sun.star.util.SortFieldType.ALPHANUMERIC
21
22  REM Imposta i campi di ordinamento da utilizzare
23  oSortDesc(0).Name = "SortFields"
24  oSortDesc(0).Value = oSortFields()
25  
26  REM Ora ordina l'intervallo!
27  oRange.Sort(oSortDesc())
28End Sub

Questo Foglio di calcolo Calc contiene il codice soprastante Basic di LibreOffice.