Guida di LibreOffice 7.2
Fornisce una raccolta di metodi per manipolare e trasformare matrici a una dimensione (vettori) e a due dimensioni (matrici). Questi comprendono: operazioni di inserimento, ordinamento, importazione da ed esportazione in file di testo.
Le matrici con più di due dimensioni non possono essere usate con i metodi di questo servizio, con l'unica eccezione del metodo CountDims che accetta matrici con qualsiasi numero di dimensioni.
Gli elementi delle matrici possono contenere qualsiasi tipo di valore, comprese matrici nidificate.
Prima di usare il servizio Array è necessario caricare le librerie ScriptForge usando:
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Il caricamento della libreria creerà l'oggetto SF_Array che può essere usato per chiamare i metodi del servizio Array.
I seguenti frammenti di codice mostrano diversi modi per richiamare i metodi del servizio Array (il metodo Append è usato come esempio):
SF_Array.Append(...)
Dim arr : arr = SF_Array
arr.Append(...)
Dim arr : arr = CreateScriptService("Array")
arr.Append(...)
Il metodo CreateScriptService è disponibile solo dopo che sono state caricate in memoria le librerie ScriptForge.
Il primo argomento della maggior parte dei metodi è l'oggetto matrice da considerare. Viene passato sempre per riferimento e rimane inalterato. I metodi come Append, Prepend, ecc. dopo la loro esecuzione restituiscono una nuova matrice.
Aggiunge gli elementi elencati negli argomenti alla fine della matrice di partenza.
SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: la matrice preesistente, che può essere vuota.
arg0, ... : un elenco di elementi da accodare alla matrice Array_1D.
Sub Example_Append()
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
End Sub
Aggiunge una nuova colonna alla destra di una matrice bidimensionale. La matrice che ne risulta ha gli stessi limiti inferiori della matrice bidimensionale iniziale.
SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant
Array_2D: la matrice preesistente, che può essere vuota. Se la matrice ha una sola dimensione, viene considerata come prima colonna della matrice bidimensionale risultante.
New_Column: una matrice unidimensionale con tanti elementi quante sono le righe nella matrice Array_2D.
Sub Example_AppendColumn()
Dim a As Variant, b As variant
a = SF_Array.AppendColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 4), (2, 5), (3, 6))
b = SF_Array.AppendColumn(a, Array(7, 8, 9))
' ((1, 4, 7), (2, 5, 8), (3, 6, 9))
c = SF_Array.AppendColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
End Sub
Aggiunge un nuova riga in fondo a una matrice bidimensionale. La matrice che ne risulta ha gli stessi limiti inferiori della matrice bidimensionale iniziale.
SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: la matrice preesistente, che può essere vuota. Se la matrice è unidimensionale, viene considerata la prima riga della matrice bidimensionale risultante.
Row: una matrice unidimensionale con tanti elementi quante sono le colonne nella matrice Array_2D.
Sub Example_AppendRow()
Dim a As Variant, b As variant
a = SF_Array.AppendRow(Array(1, 2, 3), Array(4, 5, 6))
' ((1, 2, 3), (4, 5, 6))
b = SF_Array..AppendRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
End Sub
Controlla se una matrice unidimensionale contiene un determinato numero, testo o data. La comparazione del testo può essere soggetta a distinzione tra maiuscole e minuscole oppure no.
Le matrici ordinate di partenza devono essere riempite in modo omogeneo, ciò significa che tutti gli elementi devono essere scalari dello stesso tipo (i valori Empty e Null sono vietati).
Il risultato del metodo non è prevedibile se una matrice viene passata come ordinata, ma in realtà non lo è.
Se la matrice è ordinata viene effettuata una ricerca di tipo binario, altrimenti viene semplicemente controllata da cima a fondo ed i valori Empty e Null vengono ignorati.
SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean
Array_1D: la matrice da controllare.
ToFind: un numero, una data o una stringa da cercare.
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
SortOrder: "ASC", "DESC" o "" (= non ordinata, predefinito)
Sub Example_Contains()
Dim a As Variant
a = SF_Array.Contains(Array("A","B","c","D"), "C", SortOrder := "ASC") ' True
SF_Array.Contains(Array("A","B","c","D"), "C", CaseSensitive := True) ' False
End Sub
Memorizza il contenuto di una matrice bidimensionale in un oggetto ScriptForge.Dictionary.
La chiave sarà estratta dalla prima colonna e l'elemento dalla seconda.
SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
Array_1D: la prima colonna deve contenere esclusivamente stringhe di lunghezza > 0, in qualsiasi ordine.
Sub Example_ConvertToDictionary()
Dim a As Variant, b As Variant
a = SF_Array.AppendColumn(Array("a", "b", "c"), Array(1, 2, 3))
b = SF_Array.ConvertToDictionary(a)
MsgBox b.Item("c") ' 3
End Sub
Conta il numero di dimensioni di una matrice. Il risultato può essere maggiore di due.
Se l'argomento non è una matrice restituisce -1
Se la matrice non è inizializzata, restituisce 0.
SF_Array.CountDims(Array_ND As Variant) As Integer
Array_ND: la matrice da esaminare.
Sub Example_CountDims()
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
End Sub
Costruisce un insieme, in forma di matrice con indice iniziale zero, applicando l'operatore della differenza ai valori delle due matrici di partenza. Gli elementi risultanti derivano dalla prima matrice e non dalla seconda.
La matrice risultante è ordinata in modo crescente.
Entrambe le matrici di partenza devono essere riempite in modo omogeneo, i loro elementi devono essere scalari dello stesso tipo. Sono proibiti gli elementi Empty e Null.
Il confronto del testo può distinguere tra maiuscole e minuscole.
SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: una matrice unidimensionale di riferimento, i cui elementi sono esaminati per la rimozione.
Array2_1D: una matrice unidimensionale, i cui elementi vengono rimossi dalla matrice passata come primo argomento.
CaseSensitive: solo per le matrici popolate da stringhe, valore predefinito = False.
Sub Example_Difference()
Dim a As Variant
a = SF_Array.Difference(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B")
End Sub
Scrivete in sequenza tutti gli elementi della matrice in un file di testo. Se il file esiste già , viene sovrascritto senza alcun avvertimento.
SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean
Array_1D: la matrice da esportare. Deve contenere solamente stringhe.
FileName: il nome del file di testo che contiene i dati. Il nome è espresso come risulta dall'attuale proprietà FileNaming del servizio SF_FileSystem. Predefinito = any (sono ammessi sia il formato URL, sia il formato nativo del sistema operativo).
Encoding: il set di caratteri da usare. Usate uno dei nomi presente nell'elenco set di caratteri IANA. Fate attenzione che LibreOffice potrebbe non implementare tutti i set di caratteri esistenti. Il predefinito è "UTF-8".
Sub Example_ExportToTextFile()
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
End Sub
Estrae una determinata colonna da una matrice bidimensionale memorizzandola in una nuova matrice.
I suoi limiti inferiore LBound e superiore UBound sono identici a quelli della prima dimensione della matrice di partenza.
SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant
Array_2D: la matrice da cui eseguire l'estrazione.
ColumnIndex: il numero della colonna da estrarre - dev'essere compreso nell'intervallo [LBound, UBound].
Sub Example_ExtractColumn
'Crea una matrice 3x3: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, col as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Estrae la terza colonna: |3, 6, 9|
col = SF_Array.ExtractColumn(mat, 2)
End Sub
Estrae una determinata riga da una matrice bidimensionale memorizzandola in una nuova matrice.
I suoi limiti inferiore LBound e superiore UBound sono identici a quelli della seconda dimensione della matrice di partenza.
SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant
Array_2D : La matrice dalla quale effettuare l'estrazione.
RowIndex: il numero della riga da estrarre - deve essere compreso nell'intervallo [LBound, UBound].
Sub Example_ExtractRow
'Crea una matrice 3x3: |1, 2, 3|
' |4, 5, 6|
' |7, 8, 9|
Dim mat as Variant, row as Variant
mat = SF_Array.AppendRow(Array(), Array(1, 2, 3))
mat = SF_Array.AppendRow(mat, Array(4, 5, 6))
mat = SF_Array.AppendRow(mat, Array(7, 8, 9))
'Estrae la prima riga: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
End Sub
Accoda tutti i singoli elementi di una matrice e tutti gli elementi delle matrici nidificate in un'unica nuova matrice priva di matrici nidificate. Le matrici nidificate vuote vengono ignorate, mentre quelle che hanno un numero di dimensioni maggiore di uno non vengono appiattite.
SF_Array.Flatten(Array_1D As Variant) As Variant
Array_1D: la matrice preesistente, che può essere vuota.
Sub Example_Flatten()
Dim a As Variant
a = SF_Array.Flatten(Array(Array(1, 2, 3), 4, 5))
' (1, 2, 3, 4, 5)
End Sub
Potete usare il metodo Flatten assieme ad altri metodi come Append o Prepend in modo da concatenare un insieme di matrici 1D in una singola matrice 1D.
Quello che segue è un esempio di come i due metodi Flatten e Append possono essere combinati per concatenare tre matrici.
Sub Concatenate_Example
'Crea le tre matrici usate in questo esempio
Dim a as Variant, b as Variant, c as Variant
a = Array(1, 2, 3)
b = Array(4, 5)
c = Array(6, 7, 8, 9)
'Concatena le tre matrici in una singola matrice 1D
Dim arr as Variant
arr = SF_Array.Flatten(SF_Array.Append(a, b, c))
'(1, 2, 3, 4, 5, 6, 7, 8, 9)
End Sub
Importa i dati contenuti in un file CSV (valori separati da virgole). La virgola può essere sostituita con qualsiasi altro carattere.
Il formato CSV utilizzabile è descritto in Formati comuni IETF e tipi MIME per i file CSV (in inglese).
Ciascuna riga del file contiene un record intero (non è ammessa l'interruzione delle righe).
In ogni caso sequenze come \n, \t, ... non vengono modificate. Per gestirle usate il metodo SF_String.Unescape().
Il metodo restituisce una matrice bidimensionale le cui righe corrispondono a un singolo record letto dal file e le cui colonne corrispondono a un campo del record. Non effettua controlli in merito alla coerenza dei tipi di campo nelle colonne. Una presunzione migliore verrà fatta nell'identificazione dei tipi numerici e delle date.
Se una riga contiene un numero minore o maggiore di campi rispetto alla prima riga del file, verrà sollevata un'eccezione. In ogni caso le righe vuote saranno semplicemente ignorate. Se la dimensione del file eccede il numero limite di elementi (vedete all'interno del codice), viene sollevata un'eccezione e la matrice viene troncata.
SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant
FileName: il nome del file di testo che contiene i dati. Il nome è espresso come risulta dall'attuale proprietà FileNaming del servizio SF_FileSystem. Predefinito = any (sono ammessi sia il formato URL, sia il formato nativo del sistema operativo).
Delimiter: un singolo carattere, di solito una virgola, un punto e virgola o un carattere di tabulazione. Predefinito = ",".
DateFormat: un meccanismo speciale gestisce le date quando DateFormat è in uno dei formati "AAAA-MM-GG", "GG-MM-AAAA" o "MM-GG-AAAA". Il trattino (-) può essere sostituito con un punto (.), una barra (/) o uno spazio. Gli altri formati di data saranno ignorati. Le date che per impostazione predefinita sono "" vengono considerate come del normale testo.
Dato questo file CSV:
Name,DateOfBirth,Address,City
Anna,2002/03/31,"Rue de l'église, 21",Toulouse
Fred,1998/05/04,"Rue Albert Einstein, 113A",Carcassonne
Sub Example_ImportFromCSVFile()
Dim a As Variant
a = SF_Array.ImportFromCSVFile("C:\Temp\myFile.csv", DateFormat := "YYYY/MM/DD")
MsgBox a(0, 3) ' City
MsgBox TypeName(a(1, 2)) ' Date
MsgBox a(2, 2) ' Rue Albert Einstein, 113A
End Sub
Cerca un numero, una stringa o una data all'interno di una matrice unidimensionale. Il confronto del testo può distinguere tra maiuscole e minuscole.
Se la matrice è ordinata deve essere riempita in modo omogeneo, ciò significa che tutti gli elementi devono essere scalari dello stesso tipo (i valori Empty e Null non sono ammessi).
Il risultato del metodo non è prevedibile se una matrice viene passata come ordinata, ma in realtà non lo è.
Se la matrice è ordinata viene eseguita una ricerca di tipo binario, altrimenti viene semplicemente controllata da cima a fondo e i valori Empty e Null vengono ignorati.
Se la ricerca è stata infruttuosa, il metodo restituisce LBound(matrice di partenza) - 1.
SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long
Array_1D: la matrice da controllare.
ToFind : un numero, una data o una stringa da cercare.
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
SortOrder: "ASC", "DESC" o "" (= non ordinata, predefinito)
Sub Example_IndexOf()
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", SortOrder := "ASC") ' 2
MsgBox SF_Array.IndexOf(Array("A","B","c","D"), "C", CaseSensitive := True) ' -1
End Sub
Inserisce, prima di un determinato indice della matrice di partenza, tutti gli elementi elencati negli argomenti.
Gli argomenti vengono inseriti alla cieca. Ciascuno di essi dev'essere uno scalare di qualsiasi tipo o una matrice da nidificare.
SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : la matrice preesistente, che può essere vuota.
Before: l'indice prima del quale deve avvenire l'inserimento; dev'essere compreso nell'intervallo [LBound, UBound + 1].
arg0, ...: l'elenco di elementi da inserire all'interno di Array_1D.
Sub Example_Insert()
Dim a As Variant
a = SF_Array.Insert(Array(1, 2, 3), 2, "a", "b")
' (1, 2, "a", "b", 3)
End Sub
Inserisce un nuovo elemento nel posto corretto di una matrice ordinata.
La matrice deve essere riempita in modo omogeneo, ciò significa che tutti gli elementi devono essere scalari dello stesso tipo.
Gli elementi Empty e Null non sono ammessi.
SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: la matrice da ordinare.
Item: il valore scalare da inserire, dello stesso tipo degli elementi già presenti nella matrice.
SortOrder: "ASC" (predefinito) o "DESC".
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
Sub Example_InsertSorted()
Dim a As Variant
a = SF_Array.InsertSorted(Array("A", "C", "a", "b"), "B", CaseSensitive := True)
' ("A", "B", "C", "a", "b")
End Sub
Costruisce un insieme, in forma di matrice con indice iniziale zero, applicando alle due matrici l'operatore di intersezione degli insiemi. Gli elementi risultanti sono quelli presenti in entrambe le matrici.
La matrice risultante è ordinata in modo crescente.
Entrambe le matrici di partenza devono essere riempite in modo omogeneo, in altre parole, tutti i loro elementi devono essere scalari dello stesso tipo. Sono proibiti gli elementi Empty e Null.
Il confronto del testo può distinguere tra maiuscole e minuscole.
SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: la prima matrice di partenza.
Array2_1D: la seconda matrice di partenza.
CaseSensitive: si applica alle matrici popolate con elementi di testo, valore predefinito = False.
Sub Example_Intersection()
Dim a As Variant
a = SF_Array.Intersection(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("C", "b")
End Sub
Unisce una matrice bidimensionale con due delimitatori, uno per le colonne e uno per le righe.
SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String
Array_2D: ogni elemento deve essere un testo, un numero, una data o un valore logico (booleano).
Le date sono convertite nel formato AAAA-MM-GG hh:mm:ss.
Gli elementi non validi sono sostituiti da stringhe vuote di lunghezza zero.
ColumnDelimiter: delimita ciascuna colonna (predefinito = Tab/Chr(9)).
RowDelimiter: delimita ciascuna riga (predefinito = LineFeed/Chr(10))
Quote: se True, protegge le stringhe racchiuse tra virgolette. Il valore predefinito è False.
Sub Example_Join2D()
- | 1, 2, "A", [2020-02-29], 5 |
- SF_Array.Join_2D(| 6, 7, "this is a string", 9, 10 |, ",", "/")
- ' "1,2,A,2020-02-29 00:00:00,5/6,7,this is a string,9,10"
End Sub
Aggiunge, all'inizio della matrice di partenza, gli elementi elencati negli argomenti.
SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : la matrice preesistente, che può essere vuota.
arg0, ...: l'elenco degli elementi da aggiungere all'inizio di Array_1D.
Sub Example_Prepend()
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
End Sub
Inserisce una nuova colonna alla sinistra di una matrice bidimensionale. La matrice risultante ha gli stessi limiti inferiori della matrice bidimensionale di partenza.
SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant
Array_2D: la matrice preesistente, che può essere vuota. Se la matrice ha una dimensione viene considerata come ultima colonna della risultante matrice bidimensionale.
Column: una matrice unidimensionale con tanti elementi quante sono le righe in Array_2D.
Sub Example_PrependColumn()
Dim a As Variant, b As variant
a = SF_Array.PrependColumn(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 1), (5, 2), (6, 3))
b = SF_Array.PrependColumn(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(0, i) ≡ i
End Sub
Inserisce una nuova riga all'inizio di una matrice bidimensionale. La matrice risultante ha gli stessi limiti inferiori della matrice bidimensionale di partenza.
SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: la matrice preesistente, che può essere vuota. Se la matrice ha una dimensione viene considerata come ultima riga della risultante matrice bidimensionale.
Row: una matrice unidimensionale contenente tanti elementi quante sono le colonne in Array_2D.
Sub Example_PrependRow()
Dim a As Variant, b As variant
a = SF_Array.PrependRow(Array(1, 2, 3), Array(4, 5, 6))
' ((4, 5, 6), (1, 2, 3))
b = SF_Array.PrependRow(Array(), Array(1, 2, 3))
' ∀ i ∈ {0 ≤ i ≤ 2} : b(i, 0) ≡ i
End Sub
Inizializza con valori numerici una nuova matrice avente base zero.
SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant
From: valore del primo elemento.
UpTo: l'ultimo elemento non può eccedere UpTo.
ByStep: la differenza tra due elementi successivi (predefinito = 1).
Sub Example_RangeInit()
Dim a As Variant
a = SF_Array.RangeInit(10, 1, -1)
' (10, 9, 8, 7, 6, 5, 4, 3, 2, 1)
End Sub
Restituisce la matrice unidimensionale invertita di quella iniziale.
SF_Array.Reverse(Array_1D As Variant) As Variant
Array_1D: la matrice da invertire.
Sub Example_Reverse()
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
End Sub
Restituisce una permutazione casuale di una matrice unidimensionale.
SF_Array.Shuffle(Array_1D As Variant) As Variant
Array_1D: la matrice da mescolare.
Sub Example_Shuffle()
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
' Non prevedibile
End Sub
Restituisce un sottoinsieme di una matrice unidimensionale.
SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant
Array_1D: la matrice da cui estrarre una parte.
From: l'indice più basso di Array_1D da cui inizia la sottomatrice da estrarre (From compreso)
UpTo: l'indice più alto di Array_1D in cui finisce la sottomatrice da estrarre (UpTo compreso). Predefinito = limite superiore di Array_1D. Se UpTo < From allora la matrice restituita è vuota.
Sub Example_Slice()
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
End Sub
Ordina una matrice unidimensionale in modo ascendente o discendente. Il confronto di testi può distinguere tra maiuscole e minuscole.
La matrice deve essere riempita in modo omogeneo, ciò significa che gli elementi devono essere scalari dello stesso tipo.
Gli elementi Empty e Null sono ammessi. Convenzionalmente Empty < Null < qualunque altro valore scalare.
SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: la matrice da ordinare.
SortOrder: "ASC" (predefinito) o "DESC".
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
Sub Example_Sort()
Dim a As Variant
a = SF_Array.Sort(Array("a", "A", "b", "B", "C"), CaseSensitive := True)
' ("A", "B", "C", "a", "b")
End Sub
Restituisce la permutazione delle colonne di una matrice bidimensionale, ordinata in base ai valori di una determinata riga.
La riga dev'essere riempita in modo omogeneo, il che significa che tutti gli elementi devono essere scalari dello stesso tipo. Gli
Elementi Empty e Null sono ammessi. Convenzionalmente Empty < Null < qualunque altro valore scalare.
SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : La matrice da ordinare.
RowIndex: l'indice della riga in base alla quale riordinare le colonne.
SortOrder: "ASC" (predefinito) o "DESC".
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
Sub Example_SortColumns()
- | 5, 7, 3 | ' | 7, 5, 3 |
- SF_Array.SortColumns(| 1, 9, 5 |, 2, "ASC") ' | 9, 1, 5 |
- | 6, 1, 8 | ' | 1, 6, 8 |
End Sub
Restituisce una permutazione delle righe di una matrice bidimensionale, ordinata in base ai valori di una determinata colonna.
La colonna deve essere riempita in modo omogeneo, perciò tutti gli elementi devono essere scalari dello stesso tipo. Gli
Elementi Empty e Null sono ammessi. Convenzionalmente Empty < Null < qualunque altro valore scalare.
SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: la matrice da ordinare.
RowIndex: l'indice della colonna in base alla quale riordinare le righe.
SortOrder: "ASC" (predefinito) o "DESC".
CaseSensitive : Solo per il confronto di stringhe, valore predefinito = False.
Sub Example_SortRows()
- | 5, 7, 3 | ' | 1, 9, 5 |
- SF_Array.SortRows(| 1, 9, 5 |, 2, "ASC") ' | 5, 7, 3 |
- | 6, 1, 8 | ' | 6, 1, 8 |
End Sub
Inverte righe e colonne di una matrice bidimensionale.
SF_Array.Transpose(Array_2D As Variant) As Variant
Array_2D: la matrice da trasporre.
Sub Example_Transpose()
- | 1, 2 | ' | 1, 3, 5 |
- SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
- | 5, 6 |
End Sub
Rimuove da una matrice unidimensionale tutti gli elementi Null, Empty e di lunghezza zero.
Agli elementi di tipo stringa vengono rimossi gli spazi con la funzione Trim() di LibreOffice Basic.
SF_Array.TrimArray(Array_1D As Variant) As Variant
Array_1D: la matrice da controllare.
Sub Example_TrimArray()
Dim a As Variant
a = SF_Array.TrimArray(Array("A","B",Null," D "))
' ("A","B","D")
End Sub
Costruisce un insieme, in forma di matrice con indice iniziale zero, applicando alle due matrici iniziali l'operatore di unione degli insiemi. Gli elementi risultanti provengono da entrambe le matrici.
La matrice risultante è ordinata in modo crescente.
Entrambe le matrici di partenza devono essere riempite in modo omogeneo, i loro elementi devono essere scalari dello stesso tipo. Gli elementi Empty e Null non sono ammessi.
Il confronto del testo può distinguere tra maiuscole e minuscole.
SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: La prima matrice di partenza.
Array2_1D: La seconda matrice di partenza.
CaseSensitive : Solo per le matrici popolate da stringhe, valore predefinito = False.
Sub Example_Union()
Dim a As Variant
a = SF_Array.Union(Array("A", "C", "A", "b", "B"), Array("C", "Z", "b"), True)
' ("A", "B", "C", "Z", "b")
End Sub
Costruisce un insieme di valori univoci derivati dalla matrice di partenza.
La matrice iniziale deve essere riempita in modo omogeneo, i suoi elementi devono essere scalari dello stesso tipo. Gli elementi Empty e Null non sono ammessi.
Il confronto del testo può distinguere tra maiuscole e minuscole.
SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant
Array_1D: la matrice di partenza.
CaseSensitive: solo se la matrice è popolata con testo, predefinito = False.
Sub Example_Unique()
Dim a As Variant
a = SF_Array.Unique(Array("A", "C", "A", "b", "B"), CaseSensitive := True)
' ("A", "B", "C", "b")
End Sub