LibreOffice 7.2 laguntza
Dimentsio bakarreko matrizeak (bektoreak) eta bi dimentsiotako matrizeak aldatzeko metodoen bilduma bat eskaintzen du. Besteak beste, ezartzeko eragiketak, ordenatzekoak eta testu-fitxategietatik inportatzeko eta esportatzekoak ditu.
Bi dimentsio baino gehiago dituzten matrizeak ezin dira erabili zerbitzu honetako metodoekin. Salbuespen bakarra CountDims metodoa da, horrek edozein dimentsio kopuru duten matrizeak onartzen baititu.
Matrize-elementuek edozein motatako balioak eduki ditzakete, baita azpimatrizeak ere.
Array zerbitzua erabili baino lehen, ScriptForge liburutegia kargatu behar da honakoa erabilita:
GlobalScope.BasicLibraries.LoadLibrary("ScriptForge")
Liburutegia kargatzean SF_Array objektua sortuko da, era horren bidez Array zerbitzuko metodoak deitu ahal izango dira.
Hurrengo kode-zatiek Array zerbitzuko metodoak deitzeko modu desberdinak erakusten dituzte (adibide gisa Append metodoa erabili da):
SF_Array.Append(...)
Dim arr : arr = SF_Array
arr.Append(...)
Dim arr : arr = CreateScriptService("Array")
arr.Append(...)
CreateScriptService metodoa erabilgarri egoteko, lehenengo ScriptForge liburutegia kargatu behar da.
Metodo askoren lehen argumentua erabiliko den matrize-objektua da. Beti erreferentzia gisa pasatuko da eta ez du aldaketarik izango. 'Append', 'Prepend' eta antzeko metodoek matrize-objektu berria itzuliko dute exekutatuak izan ondoren.
Argumentu gisa zerrendatutako elementuak sarrerako matrizearen amaieran eransten ditu.
SF_Array.Append(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.
arg0, ... : 'Matrizea_1D' matrizeari erantsiko zaizkion elementuen zerrenda.
Sub Example_Append()
Dim a As Variant
a = SF_Array.Append(Array(1, 2, 3), 4, 5)
' (1, 2, 3, 4, 5)
End Sub
Zutabe bat eransten du bi dimentsioko matrize baten eskuineko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.
SF_Array.AppendColumn(Array_2D As Variant, New_Column As Variant) As Variant
Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.
New_Column : Array_2D matrizean dauden errenkada kopuruaren elementu kopuru bera duen dimentsio bakarreko matrize bat.
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
Erantsi errenkada berria bi dimentsioko matrize baten beheko aldean. Emaitza modura sortuko den matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.
SF_Array.AppendRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D : lehendik dagoen matrize bat, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, emaitza gisa lortuko den bi dimentsioko matrizearen lehen zutabetzat hartuko da.
Row : dimentsio bakarreko matrize bat, "Array_2D" matrizeak duen zutabe kopuruaren bezainbeste elementu dituena.
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
Egiaztatu dimentsio bakarreko matrize batek zenbaki, testu edo data jakin bat duen. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Sarrerako matrize ordenatuak modu homogeneoan bete behar dira, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza aurresanezina da matrizea ordenatua dela iragartzen bada eta halakoa ez bada.
Bilaketa bitarra egiten da matrizea ordenatzen denean; bestela, goitik behera eskaneatu besterik ez da egiten eta Empty eta Null elementuei ez ikusiarena egiten zaie.
SF_Array.Contains(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Boolean
Array_1D: eskaneatuko den matrizea.
ToFind : bilatuko den zenbaki, data edo kate bat.
CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False da.
SortOrder : "ASC", "DESC" edo "" (= ez ordenatua, lehenetsia)
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
Biltegiratu 2 zutabetako matrize baten edukia ScriptForge.Dictionary objektu batean.
Gakoa lehen zutabetik erauziko da, elementua bigarrenetik.
SF_Array.ConvertToDictionary(Array_2D As Variant) As Variant
Array_1D : lehen zutabeak luzera > 0 duten kateak soilik eduki behar ditu, edozein ordenatan.
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
Zenbatu matrize baten dimentsio kopurua. Emaitza bi baino handiagoa izan daiteke.
Argumentua ez bada matrize bat, -1 itzultzen du
Matrizea hasieratu ez bada, 0 itzultzen du.
SF_Array.CountDims(Array_ND As Variant) As Integer
Array_ND : aztertuko den matrizea.
Sub Example_CountDims()
Dim a(1 To 10, -3 To 12, 5)
MsgBox SF_Array.CountDims(a) ' 3
End Sub
Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeei diferentzia eragilea aplikatuta. Emaitza gisa sortutako elementuak lehen matrizetik sortuko dira, ez bigarrenetik.
Emaitzako matrizea gorantz ordenatuta egongo da.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, beren elementuek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
SF_Array.Difference(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D : Dimentsio bakarreko erreferentziako matrizea. Matrize horren elementuak aztertuko dira kenduko diren ala ez ebazteko.
Array2_1D : Dimentsio bakarreko matrizea. Matrize horren elementuak sarrerako lehen matrizetik kenduko dira.
CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = 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
Idatzi matrize bateko elementu guztiak modu sekuentzialean testu-fitxategi batean. Fitxategia lehendik badago, hura gainidatziko da abisurik gabe.
SF_Array.ExportToTextFile(Array_1D As Variant, FileName As String, [Encoding As String]) As Boolean
Array_1D : Esportatuko den matrizea. Kateak soilik izan behar ditu.
FileName : Datuak dituen testu-fitxategiaren izena. Izena SF_FileSystem zerbitzuko uneko FileNaming propietateak emandako moduan adierazi behar da . Balio lehenetsia = any (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).
Encoding : Erabili behar den karaktere-jokoa. Erabili IANA karaktere-jokoak atalean zerrendatutako izen bat. Kontuan izan LibreOffice aplikazioak ez dituela zertan existitzen diren karaktere-joko guztiak inplementatu. Balio lehenetsia "UTF-8" da.
Sub Example_ExportToTextFile()
SF_Array.ExportToTextFile(Array("A","B","C","D"), "C:\Temp\A short file.txt")
End Sub
Erauzi zutabe zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.
SF_Array.ExtractColumn(Array_2D As Variant, ColumnIndex As Long) As Variant
Array_2D : Erauzpena jasango duen matrizea.
ColumnIndex : Erauziko den zutabearen zenbakia. [LBound, UBound] barrutian egon behar du.
Sub Example_ExtractColumn
'3x3 matrize bat sortzen du: |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))
'Hirugarren zutabea erauzten du: |3, 6, 9|
col = SF_Array.ExtractColumn(mat, 2)
End Sub
Erauzi errenkada zehatz bat bi dimentsiotako matrize batetik, matrize berria sortzeko.
Beheko LBound eta goiko UBound mugak sarrerako matrizearen lehen dimentsioak dituenen berdinak dira.
SF_Array.ExtractRow(Array_2D As Variant, RowIndex As Long) As Variant
Array_2D : Erauzketa matrize honetatik egingo da.
RowIndex : Erauziko den errenkadaren zenbakia. [LBound, UBound] barrutian egon behar du.
Sub Example_ExtractRow
'3x3 matrize bat sortzen du: |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))
'Lehen errenkada erauzten du: |1, 2, 3|
row = SF_Array.ExtractRow(mat, 0)
End Sub
Pilatu matrize berri batean, azpimatrizerik gabe, matrize bateko elementu bakarrak eta bere azpimatrizeetako elementu guztiak. Azpimatrize hutsei ez ikusiarena egingo zaie eta dimentsio bat baino gehiago ditzuten azpimatrizeak ez dira berdinduko.
SF_Array.Flatten(Array_1D As Variant) As Variant
Matrizea_1D : Lehendik dagoen matrizea, hutsik egon daiteke.
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
Flatten metodoa erabili daiteke, Append edo Prepend edo beste metodo batzuekin batera, 1D matrizeen multzo bat 1D matrize bakarrean kateatzeko.
Hurrengo adibidean, Flatten eta Append metodoak hiru matrize kateatzeko nola erabili daitezkeen azaltzen da.
Sub Concatenate_Example
'Hiru matrize sortzen ditu adibide honetarako
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)
'Hiru matrize kateatzen ditu 1D matrize bakar batean
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
Inportatu komaz banandutako balioen (CSV) fitxategi bateko datuak. Komaren ordez beste karaktere bat erabili daiteke.
CSV formatu aplikagarria IETF Common Format and MIME Type for CSV Files webgunean dago deskribatuta.
Fitxategiko lerro bakoitzak erregistro oso bat du (ez dago onartuta lerroak zatitzea).
Hala ere, \n, \t eta antzeko sekuentziak aldaketarik gabe uzten dira. Erabili SF_String.Unescape() metodoa haiek kudeatzeko.
Metodo honek bi dimentsiotako matrize bat itzultzen du. Matrizearen errenkada bakoitza fitxategian irakurritako erregistro bakar bati dagokio, eta zutabeak erregistroko zutabeei dagozkie. Ez da egiaztatzerik egiten eremu motek zutabez zutabe duten koherentzia ziurtatzeko. Estimazio bat egingo da zenbakizko motak eta datak diren motak identifikatzeko.
Lerroak fitxategiko lehen lerroak baino eremu gehiago edo gutxiago baditu, salbuespen bat sortuko da. Lerro hutsei ez ikusiarena egingo zaie. Fitxategiaren tamainak elementu kopuruaren muga gainditzen badu (ikusi kodea barruan), abisu bat sortuko da eta matrizea moztu egingo da.
SF_Array.ImportFromCSVFile(FileName As String, [Delimiter As String], [DateFormat As String]) As Variant
FileName : Datuak dituen testu-fitxategiaren izena. Izena nola adieraziko den zehazteko, SF_FileSystem zerbitzuaren uneko FileNaming propietatea erabiliko da. Lehenetsia = edozein (URL formatua zein sistema eragilearen jatorrizko formatua onartzen dira).
Delimiter : Karaktere bakarra, normalean koma bat, puntu eta koma bat edo tabulazio-karaktere bat. Lehenetsia = ",".
DateFormat : Mekanismo berezi batek maneiatzen ditu datak DateFormat honakoetako bat bada: "UUUU-HH-EE", "EE-HH-UUUU" edo "HH-EE-UUUU". Marratxoaren (-) ordez puntu bat (.), barra bat (/) edo zuriune bat erabili daiteke. Beste data-formatu batzuei ez ikusiarena egingo zaie. Lehenespen modura "" diren datak testu normaltzat hartzen dira.
Honako CSV fitxategi bat emanda:
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
Bilatu dimentsio bakarreko matrize batean zenbaki, kate edo data bat. Testu-konparazioak maiuskulak/minuskulak kontuan hartu ditzake edo ez.
Matrizea ordenatuta badago, modu homogeneneoan bete behar da, alegia, elementu guztiek mota bereko eskalarrak izan behar dute (Empty eta Null elementuak debekatuta daude).
Metodoaren emaitza ezin da aurresan matrizea ordenatuta dagoela esaten bada baina ez badago.
Ordenatutako matrizeetan bilaketa bitarra exekutatzen da. Bestela, matrizeak goitik behera eskaneatzen dira eta Empty eta Null elementuei ez ikusiarena egiten zaie.
Metodoak LBound(sarrerako matrizea) - 1 itzultzen du bilaketak arrakastarik izan ez badu.
SF_Array.IndexOf(Array_1D, ToFind As Variant, [CaseSensitive As Boolean], [SortOrder As String]) As Long
Array_1D : Eskaneatuko den matrizea.
ToFind : Bilatuko den zenbaki, data edo kate bat.
CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).
SortOrder : "ASC", "DESC" edo "" (= ordenatu gabea, lehenetsia)
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
Sartu argumentu gisa zerrendatutako elementuak sarrerako matrizearen indize jakin baten aurrean.
Argumentuak itsuan txertatuko dira. Horietako bakoitza eskalar bar izan daiteke edo edozein motatako azpimatrize bat izan daiteke.
SF_Array.Insert(Array_1D As Variant, Before As Long, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : Lehendik dagoen matrizea, hutsik egon behar du.
Before : Txertatzea indize honen aurrean gertatuko da; [LBound, UBound + 1] tartean egon behar du.
arg0, ... : Array_1D barruan txertatuko diren elementuen zerrenda.
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
Txertatu elementu berri bat bere tokian ordenatutako matrize batean.
Matrizea modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak debekatuta daude.
SF_Array.InsertSorted(Array_1D As Variant, Item As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : Ordenatuko den matrizea.
Item : Txertatuko den eskalarra, matrizean lehendik dauden elementuen mota berekoa.
SortOrder : "ASC" (lehenetsia) edo "DESC".
CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua).
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
Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen ebakidura-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta dago.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
SF_Array.Intersection(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D : Sarrerako lehen matrizea.
Array2_1D : Sarrerako bigarren matrizea.
CaseSensitive : Matrizeak testu-elementuek beteta badaude soilik, balio lehenetsia = False (faltsua).
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
Elkartu bi dimentsioko matrize bat bi mugatzailerekin, bat zutabeentzat eta bestea errenkadentzat.
SF_Array.Join2D(Array_2D As Variant, ColumnDelimiter As String, RowDelimiter As String, Quote As Boolean) As String
Array_2D : Elementu bakoitzak testu, zenbaki, data edo boolear izan behar du.
Datak UUU-HH-EE oo:mm:ss formatura bihurtuko da.
Baliogabeko elementuak zero luzerako kateekin ordeztuko dira.
ColumnDelimiter : Zutabe bakoitza mugatzen du (balio lehenetsia = Tab/Chr(9)).
RowDelimiter: Errenkada bakoitza mugatzen du (balio lehenetsia = LineFeed/Chr(10))
Quote : True (egia) bada, babestu kateak komatxo bikoitzekin. Balio lehenetsia False (faltsua) da.
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
Kokatu argumentu gisa zerrendatutako elementuak sarrerako matrizearen hasieran.
SF_Array.Prepend(Array_1D As Variant, arg0 As Variant, [arg1 As Variant], ...) As Variant
Array_1D : Lehendik dagoen matrizea, hutsik egon daiteke.
arg0, ... : Array_1D matrizearen aurrean kokatuko diren elementuen zerrenda.
Sub Example_Prepend()
Dim a As Variant
a = SF_Array.Prepend(Array(1, 2, 3), 4, 5)
' (4, 5, 1, 2, 3)
End Sub
Erantsi zutabe berri bat bi dimentsioko matrize baten ezkerreko aldean. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.
SF_Array.PrependColumn(Array_2D As Variant, Column As Variant) As Variant
Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken zutabetzat hartuko da.
Column : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.
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
Erantsi errenkada berri bat bi dimentsioko matrize baten hasieran. Emaitza gisa sortutako matrizeak hasierako bi dimentsioko matrizearen beheko muga berak izango ditu.
SF_Array.PrependRow(Array_2D As Variant, Row As Variant) As Variant
Array_2D : Lehendik dagoen matrizea, hutsik egon daiteke. Matrizeak dimentsio bakarra badu, sortuko den bi dimentsioko matrizearen azken errenkadatzat hartuko da.
Row : Dimentsio bakarreko matrizea, Array_2D matrizean dauden errenkada kopuruaren bezain beste elementu dituena.
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
Hasieratu zeron oinarritutako matrize berri bat zenbakizko balioekin.
SF_Array.RangeInit(From As [number], UpTo As [number] [, ByStep As [number]]) As Variant
From : Lehen elementuaren balioa.
UpTo : Azken elementuak ez du UpTo gainditu behar.
ByStep : Elkarren ondoan dauden bi elementuen arteko diferentzia (balio lehenetsia = 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
Itzuli dimentsio bakarreko matrize baten alderantzizkoa.
SF_Array.Reverse(Array_1D As Variant) As Variant
Array_1D : Alderantzikatuko den matrizea.
Sub Example_Reverse()
Dim a As Variant
a = SF_Array.Reverse(Array("a", 2, 3, 4))
' (4, 3, 2, "a")
End Sub
Itzuli dimentsio bakarreko matrize baten ausazko permutazio bat.
SF_Array.Shuffle(Array_1D As Variant) As Variant
Array_1D : Nahastuko den matrizea.
Sub Example_Shuffle()
Dim a As Variant
a = SF_Array.Shuffle(Array(1, 2, 3, 4))
' Ezin da aurresan
End Sub
Itzuli dimentsio bakarreko matrize baten azpimultzo bat.
SF_Array.Slice(Array_1D As Variant, From As Long, [UpTo As Long]) As Variant
Array_1D : Zatituko den matrizea.
From : Erauziko den azpimatrizearen indizerik baxuena (From barne) Array_1D matrizean
UpTo : Erauziko den azpimatrizearen indizerik altuena (UpTo barne) Array_1D matrizean. Balio lehenetsia = Array_1D matrizearen goiko muga. UpTo < From bada, orduan itzuliko den matrizea hutsik egongo da.
Sub Example_Slice()
Dim a As Variant
a = SF_Array.Slice(Array(1, 2, 3, 4, 5), 1, 3) ' (2, 3, 4)
End Sub
Ordenatu dimentsio bakarreko matrize bat gorantz edo beherantz. Testu-konparazioetan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.
SF_Array.Sort(Array_1D As Variant, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : Ordenatuko den matrizea.
SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).
CaseSensitive : Kate-konparazioetarako soilik, lehenetsia = False (faltsua.
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
Itzuli bi dimentsioko matrize baten zutabeen permutazio bat, emandako errenkada baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.
SF_Array.SortColumns(Array_1D As Variant, RowIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D: Ordenatuko den matrizea.
RowIndex : Zutabeak ordenatzeko erabiliko den errenkadaren indizea.
SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).
CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).
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
Itzuli bi dimentsioko matrize baten errenkaden permutazio bat, emandako zutabe baten balioen arabera ordenatuta.
Matrizeak modu homogeneoan beteta egon behar du, alegia, elementuek mota bereko eskalarrak izan behar dute.
Empty eta Null elementuak onartzen dira. Normalean, Empty < Null < beste edozein balio eskalar.
SF_Array.SortRows(Array_1D As Variant, ColumnIndex As Long, SortOrder As String, CaseSensitive As Boolean) As Variant
Array_1D : Ordenatuko den matrizea.
RowIndex : Errenkadak ordenatzeko erabiliko den zutabearen indizea.
SortOrder : "ASC" (gorantz, lehenetsia) edo "DESC" (beherantz).
CaseSensitive : Kate-konparazioetarako soilik, balio lehenetsia = False (faltsua).
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
Errenkadak eta zutabeak trukatzen ditu bi dimentsioko matrize batean.
SF_Array.Transpose(Array_2D As Variant) As Variant
Array_2D : Trukatuko den matrizea.
Sub Example_Transpose()
- | 1, 2 | ' | 1, 3, 5 |
- SF_Array.Transpose(| 3, 4 |) ' | 2, 4, 6 |
- | 5, 6 |
End Sub
Dimentsio bakarreko matrize batean, kendu Null, Empty eta zero luzerako sarrerak.
Kate motako elementuak LibreOffice Basic Trim() funtzioarekin moztuko dira.
SF_Array.TrimArray(Array_1D As Variant) As Variant
Array_1D : Eskaneatuko den matrizea.
Sub Example_TrimArray()
Dim a As Variant
a = SF_Array.TrimArray(Array("A","B",Null," D "))
' ("A","B","D")
End Sub
Eraiki multzo bat, zeron oinarritutako matrize gisa, sarrerako bi matrizeen batuketa-eragiketa aplikatuta. Emaitza gisa lortutako elementuak bi matrizeetan daudenak dira.
Emaitza gisa lortutako matrizea gorantz ordenatuta egongo dira.
Sarrerako bi matrizeek modu homogeneoan beteta egon behar dute, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
SF_Array.Union(Array1_1D As Variant, Array2_1D As Variant[, CaseSensitive As Boolean]) As Variant
Array1_1D : Sarrerako lehen matrizea.
Array2_1D : Sarrerako bigarren matrizea.
CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = 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
Eraiki balio bakarren multzo bat sarrerako matrize batetik eratorrita.
Sarrerako matrizeak modu homogeneoan beteta egon behar du, alegia, elementu guztiek mota bereko eskalarrak izan behar dute. Empty eta Null elementuak debekatuta daude.
Testu-konparazioan maiuskulak/minuskulak kontuan hartu daitezke edo ez.
SF_Array.Unique(Array_1D As Variant, CaseSensitive As Boolean]) As Variant
Array_1D : Sarrerako matrizea.
CaseSensitive : Matrizeak kateekin beteta badaude soilik, balio lehenetsia = 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