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

#1 Re: Calc » Práce s poli v makru » 17. 11. 2009 22:29:00

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.

#2 Calc » Práce s poli v makru » 14. 11. 2009 19:15:59

BartonM
Odpovědí: 2

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.

#3 Re: Calc » Příliš pomalé makro - prosím pomozte » 14. 11. 2009 15:49:41

Moc děkuju,
tak jsem zkusil vaše rady...

ta první (nevracení se před aktuální řádek) pomohla dost výrazně
také mám už předem setříděné hodnoty, takže jsem použil i to druhé zjednodušení a opět se program mnohem urychil...

ale nevím si rady s tím polem. Nikdy jsem s ním nepracoval (jsem teprve začátečník), z knížky jsem vůbec nic nepochopil a vlastně tam toho ani moc nebylo...
...poraďte mi prosím ještě, jak deklarovat toto pole, jak buňky uložit do pole (a opačně), jak pracovat s hodnotamy (popř. i celými řádky)

Moc děkuju
PS: hledal jsem nejdříve i tady na fóru, ale o práci s poly jsem tu nic nenašel...

//Edit: přišlo mi vhodné založit pro tento dotaz samostatné téma

#4 Calc » Příliš pomalé makro - prosím pomozte » 13. 11. 2009 19:12:13

BartonM
Odpovědí: 2

Zdravím,
mám menší problém.
Mám porovnat asi 6000 řad čísel o 20 hodnotách (20sloupců) stylem každá s každou a vypsat počet shod vyšších než 10. Napsal jsem makro (je to součást něčeho většího), funguje, ale trvá to v řádu desítek minut neboi spíš hodin

Přitom to jsou jednoduché cylky... mohli byste mi pls poradit, jak to zrychlit?
Děkuju moc.

Tady je kód:

Sub list2020 (list as Object, lastC as Integer, lastR as Integer)
dim bunka
rem pocet shod 20/20
dim cislaA(19)
dim cislaB(19)
dim p as Integer
for a=1 to lastR 'pro prvni radek az posledni
    for i=23 to 33
        bunka=list.getCellByPosition(i,a)
        bunka.value=0 ' vymaze pocet shod (pro opakovane spusteni)
    next i        
    'print "vynulovano"    
      for b=1 to 20 ' nacte cely radek do cislaA
           bunka=list.getCellByPosition(b,a)
           cislaA(b-1)=bunka.Value
      next b 
      for c=1 to lastR ' pro prvni radek az posledni
          if c<>a then ' ...krome sebe sameho
               for d=1 to 20 ' nacte cely radek do cislaB
                bunka=list.getCellByPosition(d,c)
                cislaB(d-1)=bunka.Value
               next d          
               rem pocet shod
               p=0
               for x=0 to 19
                   for y=0 to 19
                       if cislaA(x)=cislaB(y) then
                           p=p+1
                       end if
                   next y
               next x          
               rem konec
               rem vypise pocet shod
               p=p-10 ' uvazujeme pouze shodu vetsi nebo rovnu 10
               if p >=0 then
                   bunka=list.getCellByPosition(p+23,a) ' vychozi sloupec + p
                   bunka.value=bunka.value+1 ' inkrementuje "1"                  
               end if              
               rem konec          
           end if       
       next c
next a
rem konec
End Sub

Zápatí

Používáme FluxBB