Nápověda LibreOffice 7.2
Poskytuje sadu metod pro manipulaci s jednorozměrnými poli (vektory) a dvourozměrnými poli (maticemi) a jejich transformaci. Mezi ně patří množinové operace, řazení, import z textových souborů a import do nich.
Pole s více než dvěma rozměry nelze pomocí metod této služby používat, jedinou výjimkou je metoda CountDims, která přijímá pole s libovolným počtem rozměrů.
Položky polí mohou obsahovat jakýkoliv typ hodnoty, a to včetně dalších polí.
Před používáním služby Array je nutné načíst knihovnu ScriptForge pomocí:
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Načtení knihovny vytvoří objekt SF_Array, který lze používat pro volání metod služby Array.
Následující části kódu ukazují různé způsoby volání metod služby Array (jako příklad je uvedena metoda Append):
SF_Array.Append(...)
Dim arr : arr = SF_Array
arr.Append(...)
Dim arr : arr = CreateScriptService("Array")
arr.Append(...)
Metoda CreateScriptService je k dispozici pouze po načtení knihovny ScriptForge.
Prvním argumentem většiny metod je objekt pole, s nímž se má pracovat. Vždy je předáván odkazem a metody jej nemění. Metody jako Append, Prepend apod. vracejí po provedení nový objekt pole.
Přidá položky uvedené jako argumenty na konec vstupního pole.
SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: Předem existující pole, může být prázdné.
arg0, ... : položky, které se mají k poli Array_1D připojit.
Sub Example_Append()
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
End Sub
Přidá na pravou stranu dvourozměrného pole nový sloupec. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.
SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant
Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první sloupec výsledného dvourozměrného pole.
New_Column: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.
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
Přidá do dolní části dvourozměrného pole nový řádek. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.
SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první řádek výsledného dvourozměrného pole.
Row: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.
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
Ověří, zda jednorozměrné pole obsahuje určité číslo, text nebo datum. U porovnání textu se může či nemusí rozlišovat velikost písmen.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu (položky Empty a Null nejsou povoleny).
Výsledek metody nelze určit, pokud je pole označeno jako seřazené, ale ve skutečnosti seřazeno není.
Je-li pole seřazeno, provede se binární vyhledávání, v opačném případě se pole prohledá od začátku do konce, přičemž položky Empty a Null se ignorují.
SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean
Array_1D: Pole, které se má prohledat.
ToFind: Číslo, datum nebo řetězec, který se má najít.
CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).
SortOrder : "ASC", "DESC" nebo "" (= neseřazeno, výchozí)
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
Uloží obsah dvourozměrného pole do objektu ScriptForge.Dictionary.
Klíče budou získány z prvního sloupce, položky z druhého.
SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
Array_1D: první sloupec musí obsahovat výhradně řetězce s délkou větší než nula, a to v jakémkoliv pořadí.
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
Spočítá rozměry pole. Výsledek může být větší než 2.
Pokud není argumentem pole, vrátí -1.
Pokud není pole inicializováno, vrátí 0.
SF_Array.CountDims(Array_ND As Variant) As Integer
Array_ND: Pole, které se má prozkoumat.
Sub Example_CountDims()
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
End Sub
Použije operátor rozdílu na dvě vstupní pole a vytvoří tak množinu v podobě pole začínajícího od 0. Výsledné položky pocházejí z prvního pole, nikoliv ze druhého.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.
SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: Referenční jednorozměrné pole, pro jehož položky se bude zjišťovat, zda mají být odstraněny.
Array2_1D: Jednorozměrné pole, jehož položky se od prvního vstupního pole odčítají.
CaseSensitive: Použitelné pouze tehdy, obsahují-li pole řetězce (výchozí = 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
Postupně zapíše všechny položky pole do textového souboru. Pokud již soubor existuje, bez upozornění je přepsán.
SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean
Array_1D: Pole, které se má exportovat. Může obsahovat pouze řetězce.
FileName: Název textového souboru obsahujícího data. Název musí odpovídat aktuální vlastnosti FileNaming ze služby SF_FileSystem. Výchozí = jakýkoliv. (Platné jsou jako formát URL, tak nativní formát operačního systému.)
Encoding: Znaková sada, která by se měla použít. Uveďte některý z názvů ze seznamu znakových sad IANA. Mějte na paměti, že v LibreOffice nemusí být všechny znakové sady implementovány. Výchozí je "UTF-8".
Sub Example_ExportToTextFile()
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
End Sub
Získá z dvourozměrného pole určitý sloupec jako nové pole.
Meze nového pole, dolní LBound a horní UBound, jsou totožné s mezemi prvního rozměru vstupního pole.
SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant
Array_2D: Pole, z něhož se má sloupec získat.
ColumnIndex: Číslo sloupce, který se má získat - musí být v intervalu [LBound, UBound].
Sub Example_ExtractColumn
' Vytvoří matici 3 × 3: |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))
' Získá třetí sloupec: [3, 6, 9]
col = SF_Array.ExtractColumn(mat, 2)
End Sub
Získá z dvourozměrného pole určitý řádek jako nové pole.
Meze nového pole, dolní LBound a horní UBound, jsou totožné s mezemi druhého rozměru vstupního pole.
SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant
Array_2D: Pole, z něhož se má řádek získat.
RowIndex: Číslo řádku, který se má získat - musí být v intervalu [LBound, UBound].
Sub Example_ExtractRow
' Vytvoří matici 3 × 3: |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))
' Získá první řádek: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
End Sub
Uspořádá všechny jednotlivé položky pole a položky všech jeho podpolí do nového pole, které podpole neobsahuje. Prázdná podpole se ignorují, podpole s více rozměry než jedním zjednodušena nejsou.
SF_Array.Flatten(Array_1D As Variant) As Variant
Array_1D: Předem existující pole, může být prázdné.
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
Metodu Flatten je možné spolu s metodami jako Append či Prepend použít pro spojení více jednorozměrných polí do jediného jednorozměrného pole.
Následuje příklad spojení tří polí zkombinováním metod Flatten a Append.
Sub Concatenate_Example
' Vytvoří pro tento příklad tři pole
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)
' Spojí tři pole do jediného jednorozměrného
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
Naimportuje data ze souboru s hodnotami oddělenými čárkou (CSV). Čárku lze nahradit libovolným znakem.
Formát CSV, který je možné použít, je popsán v dookumentu IETF Common Format and MIME Type for CSV Files.
Každý řádek souboru obsahuje úplný záznam (není povoleno řádky dělit).
Posloupnosti znaků jako \n, \t apod. jsou ponechány beze změny. Chcete-li je zpracovat, použijte metodu SF_String.Unescape().
Metoda vrátí dvourozměrné pole s řádky odpovídajícími záznamům načteným ze souboru a sloupci odpovídajícími jednotlivým polím záznamů. Nekontroluje se, zda jsou ve sloupcích konzistentní typy polí. Kvalifikovaným odhadem se určí číselné a datové typy.
Obsahuje-li řádek více polí než první řádek v souboru, nastane chyba. Prázdné řádky se jednoduše ignorují. Pokud velikost souboru převýší limit pro počet položek (uvedený v kódu), dojde k upozornění a pole se zkrátí.
SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant
FileName: Název textového souboru obsahujícího data. Název musí odpovídat aktuální vlastnosti FileNaming ze služby SF_FileSystem. Výchozí = jakýkoliv. (Platné jsou jako formát URL, tak nativní formát operačního systému.)
Delimiter: Jediný znak, obvykle čárka, středník nebo tabulátor. Výchozí = ",".
DateFormat: Pokud je dateformat "YYYY-MM-DD", "DD-MM-YYYY" či "MM-DD-YYYY", zpracují se data speciálním způsobem. Pomlčku (-) lze nahradit tečkou (.), lomítkem (/) nebo mezerou. Jiné formáty data se ignorují. Data, která odpovídají prázdnému řetězci "", jsou považována za běžný text.
K dispozici je tento soubor 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
Vyhledá v jednorozměrném poli číslo, řetězec nebo datum. U porovnání textu se může či nemusí rozlišovat velikost písmen.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu (položky Empty a Null nejsou povoleny).
Výsledek metody nelze určit, pokud je pole označeno jako seřazené, ale ve skutečnosti seřazeno není.
Je-li pole seřazeno, provede se binární vyhledávání, v opačném případě se pole prohledá od začátku do konce, přičemž položky Empty a Null se ignorují.
Pokud není hledání úspěšné, metoda vrátí LBound(input array) - 1.
SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long
Array_1D: Pole, které se má prohledat.
ToFind: Číslo, datum nebo řetězec, který se má najít.
CaseSensitive: Pouze pro porovnání řetězců (výchozí = False).
SortOrder : "ASC", "DESC" nebo "" (= neseřazeno, výchozí)
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
Vloží před zadaný index vstupního pole položky uvedené jako argumenty.
Argumenty se vkládají bez jakékoliv kontroly. Každý z nich může být buď skalár libovolného typu, nebo podpole.
SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: Předem existující pole, může být prázdné.
Before: Index, před který se položky vloží; musí být v intervalu [LBound, UBound + 1].
arg0, ...: Seznam položek, které se mají do pole Array_1D vložit.
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
Vloží do seřazeného pole na správné místo novou položku.
Seřazená vstupní pole musí být homogenně vyplněna, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null nejsou povoleny.
SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Pole, které se má seřadit.
Item: Skalární hodnota, která se má vložit, téhož typu jako stávající položky pole.
SortOrder : "ASC" (výchozí) nebo "DESC".
CaseSensitive: Pouze pro porovnání řetězců (výchozí = 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
Použije na dvě vstupní pole množinový operátor průniku a vytvoří tak novou množinu v podobě pole začínajícího od 0. Výsledné položky jsou obsaženy v obou polích.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.
SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: První vstupní pole.
Array2_1D: Druhé vstupní pole.
CaseSensitive: Týká se polí s textovými položkami (výchozí = 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
Spojí položky dvourozměrného pole dvěma oddělovači, prvním mezi sloupci, druhým mezi řádky.
SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String
Array_2D: Každá položka musí být text, číslo, datum nebo booleovská hodnota.
Data jsou převedena na formát YYYY-MM-DD hh:mm:ss.
Neplatné položky jsou nahrazeny řetězci s nulovou délkou.
ColumnDelimiter: Odděluje sloupce (výchozí = tabulátor/Chr(9)).
RowDelimiter: Odděluje řádky (výchozí = konec řádku LF / Chr(10))
Quote: Je-li True, uzavře řetězce do dvojitých uvozovek. Výchozí je 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
Přidá položky uvedené jako argumenty na začátek vstupního pole.
SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D: Předem existující pole, může být prázdné.
arg0, ...: Seznam položek, které se mají k poli Array_1D přidat.
Sub Example_Prepend()
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
End Sub
Přidá na levou stranu dvourozměrného pole nový sloupec. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.
SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant
Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za poslední řádek výsledného dvourozměrného pole.
Column: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.
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
Přidá na začátek dvourozměrného pole nový řádek. Výsledné pole má stejné dolní meze jako původní dvourozměrné pole.
SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D: Předem existující pole, může být prázdné. Pokud je toto pole pouze jednorozměrné, je považováno za první řádek výsledného dvourozměrného pole.
Row: Jednorozměrné pole s tolika položkami, kolik má pole Array_2D řádků.
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
Inicializuje číselnými hodnotami nové pole začínající od 0.
SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant
From: Hodnota první položky.
UpTo: Poslední položka by neměla být větší než UpTo.
ByStep: Rozdíl mezi dvěma po sobě následujícími položkami (výchozí = 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
Vrátí obrácené jednorozměrné vstupní pole.
SF_Array.Reverse(Array_1D As Variant) As Variant
Array_1D: Pole, které se má obrátit.
Sub Example_Reverse()
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
End Sub
Vrátí náhodnou permutaci jednorozměrného pole.
SF_Array.Shuffle(Array_1D As Variant) As Variant
Array_1D: Pole, jehož permutace se má vytvořit.
Sub Example_Shuffle()
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
' Nelze určit
End Sub
Vrátí podmnožinu jednorozměrného pole.
SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant
Array_1D: Pole, jehož podmnožina se má vrátit.
From: Dolní index pole Array_1D, od něhož se má podpole získat (včetně indexu From)
UpTo: Horní index pole Array_1D, do něhož se má podpole získat (včetně indexu UpTo). Výchozí hodnotou je horní mez pole Array_1D. Je-li UpTo < From, vrátí se prázdné pole.
Sub Example_Slice()
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
End Sub
Seřadí jednorozměrné pole vzestupně nebo sestupně. Při porovnávání textů se může či nemusí rozlišovat velikost písmen.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.
SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Pole, které se má seřadit.
SortOrder : "ASC" (výchozí) nebo "DESC".
CaseSensitive: Pouze pro porovnání řetězců (výchozí = 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
Vrátí permutaci sloupců dvourozměrného pole, seřazenou podle hodnot v zadaném řádku.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.
SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Pole, které se má seřadit.
RowIndex: Index řádku, který bude pro řazení sloupců použit.
SortOrder : "ASC" (výchozí) nebo "DESC".
CaseSensitive: Pouze pro porovnání řetězců (výchozí = 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
Vrátí permutaci řádků dvourozměrného pole, seřazenou podle hodnot v zadaném sloupci.
Pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu.
Položky Empty a Null jsou povoleny. Platí, že Empty < Null < jakákoliv jiná skalární hodnota.
SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Pole, které se má seřadit.
ColumnIndex: Index sloupce, který bude pro řazení řádků použit.
SortOrder : "ASC" (výchozí) nebo "DESC".
CaseSensitive: Pouze pro porovnání řetězců (výchozí = 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
Prohodí v dvourozměrném poli řádky a sloupce.
SF_Array.Transpose(Array_2D As Variant) As Variant
Array_2D : Pole, které se má transponovat.
Sub Example_Transpose()
- | 1, 2 | ' | 1, 3, 5 |
- SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
- | 5, 6 |
End Sub
Odstraní z jednorozměrného pole všechny položky s nulovou délkou a s hodnotami Null, Empty.
Řetězce v položkách budou oříznuty funkcí LibreOffice Basic Trim().
SF_Array.TrimArray(Array_1D As Variant) As Variant
Array_1D: Pole, které se má prohledat.
Sub Example_TrimArray()
Dim a As Variant
a = SF_Array.TrimArray(Array("A","B",Null," D "))
' ("A","B","D")
End Sub
Použije operátor sjednocení na dvě vstupní pole a vytvoří tak množinu v podobě pole začínajícího od 0. Výsledné položky mohou pocházet z obou polí.
Výsledné pole je vzestupně seřazeno.
Obě vstupní pole musí být homogenně vyplněna, tj. jejich položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.
SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D: První vstupní pole.
Array2_1D: Druhé vstupní pole.
CaseSensitive: Použitelné pouze tehdy, obsahují-li pole řetězce (výchozí = 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
Vytvoří ze vstupního pole množinu jedinečných hodnot.
Vstupní pole musí být homogenně vyplněno, tj. všechny položky musí být skaláry téhož typu. Položky Empty a Null nejsou povoleny.
Porovnání textu může či nemusí rozlišovat velikost písmen.
SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant
Array_1D: Vstupní pole.
CaseSensitive: Použitelné pouze tehdy, obsahují-li pole texty (výchozí = 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