Není to čisté pole, ale pracovat s tím jde
sub pole
Dim Doc As Object
Dim Sheet As Object
Dim Cell As Object
Sheet = ThisComponent.Sheets(0)
cislo = sheet.getCellRangeByName("A1:T6000").getDataArray
' dostaneme vektor vektorů nebo lépe vektor řádků
' příklad na jednotlivé prvky
x = cislo(0)(0) ' cislo(řádek)(sloupec)
x = cislo(100)(15)
x = cislo(10)(0)
' nějaká operace
for i = 0 to 5999
cisloA = cislo(i) ' celý řádek do cisloA
for j = i + 1 to 5999
xxx = 0
cisloB=cislo(j)
for k = 0 to 19
if cisloA(k) = cisloB(k) then xxx = xxx + 1
next k
next j
next i
' a uložíme zpět (jinam)
sheet.getCellRangeByName("V1:AO6000").setDataArray(cislo)
end sub
U mne: načtení celého pole cca 5 sec, zápis celého pole cca 2 sec (automatický přepočet zapnut)
Na změření vnitřní smyčky jsem neměl trpělivost, pro 500 řádků cca 70 sec.
Smyčka bez pomocných řádků
(if cislo(i)(k) = cislo(j)(k) then xxx = xxx + 1) pro 500 řádků cca 120 sec
Načtení po jednotlivých buňkách (něco na způsob původního makra ale do pole) cca 80 sec
Pro měření zapisu po jednotlivých buňkách jsem neměl trpělivost (i při vypnutém automatickém přepočtu)