Fórum pro uživatele kancelářského balíku OpenOffice | LibreOffice
 

#1 14. 11. 2009 19:15:59

BartonM
Člen
Registrace: 13. 11. 2009
Příspěvků: 4

Práce s poli v makru

Dobrý den,
potřeboval bych poradit, jak v makru pracovat s poli

Mám cca 6000 řádků čísel o 20 sloupcích a rád bych načetl celý rozsah buněk do pole, rád bych pracoval s hodnotami i s celými řadami a rád bych pak nové pole (s výsledky) zapsal zpět do listu.

Učím se i podle knížky, ale tam s hodnotami vůbec nepracují, tam jenom celé pole setřídí, odfiltrují a nebo pomocí pole zkopírují celou oblasat buněk

více o celé úloza jsem psal tady, ale přišlo mi, že bude lepší tento dotaz zapsat jako samostatné téma

Poraďte mi, prosím.
Předem děkuji.

Offline

#2 15. 11. 2009 18:40:00

lp.
Člen
Registrace: 24. 9. 2009
Příspěvků: 842

Re: Práce s poli v makru

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)

Offline

#3 17. 11. 2009 22:29:00

BartonM
Člen
Registrace: 13. 11. 2009
Příspěvků: 4

Re: Práce s poli v makru

Moc Vám děkuju,
sice jsem to ještě nezkoušel (mám teď 2 dny "dovolené"), ale myslím, že je to přesně to, co jsem hledal. Zvláště, pokud je to takto rychlé.
Ještě jednou děkuju.

Offline

Zápatí