Excel - VBA práce s celou oblastí

Programy pro práci s textem, tabulkami, prezentacemi

Moderátor: Moderátoři Živě.cz

Odeslat příspěvekod Hcimla 6. 8. 2014 13:55

Ahoj,

mám takový problém, potřebuji pracovat s oblastmi bez použití for cyklu. Mám např 2 oblasti stejně velké a já chci tu jednu vynásobit tou druhou, vždycky ten stejný prvek v těch oblastech. Jde to udělat i nějak jinak než cyklicky. prostě kdybych udělal něco jako Range("A1:B2")=Range("C1:D2") * Range("E1:F2") ???

díky za radu
Hcimla
Kolemjdoucí

Odeslat příspěvekod Chipoun 6. 8. 2014 19:55

Nestačilo by ti tam vložit vzorec?
Kód: Vybrat vše
Range("A1:B1").Formula = "=C1*E1"


Případně pak oblast s výsledky zkopírovat a vložit jako hodnoty přímo makrem, pokud je vzorec nežádoucí.
Chipoun
Junior

Odeslat příspěvekod Eagle 6. 8. 2014 21:10

Tohle podle mého provést nejde, protože když se podíváš do objektového modelu, zjistíš, že Range má v sobě kolekci Value2, takže je nutné postupovat po jednotlivých objektech kolekce. Dává to smysl, protože Range je objekt s neurčitým rozsahem, takže jeho Value hodnota nemůže být daná, a proto nelze dva Range násobit.
Eagle
Junior

Odeslat příspěvekod Hcimla 7. 8. 2014 06:06

A není tedy nějaká jiná možnost jak pracovat s celým polem?
Hcimla
Kolemjdoucí

Odeslat příspěvekod Chipoun 7. 8. 2014 06:54

Vložení vzorce jde do celé oblasti (a automaticky se dávají do jednotlivých buněk ve vzorci přírůstky, tzn není všude stejný vzorec). Proto jsem psal viz. výše o vzorci a pak případně vložit jako hodnoty pokud je vzorec nežádoucí.
Chipoun
Junior

Odeslat příspěvekod cirneco 7. 8. 2014 07:46

Excel umi i praci s maticemi. Zkusil bych popatrat touto cestou. (Nahrat makro s maticovou operaci - jak to naskriptuje, apod.)
cirneco
Junior

Odeslat příspěvekod Hcimla 7. 8. 2014 11:27

Vkládání vzorců používám, ale myslel jsem právě něco na způsob matic. Zkusím se s tím nějak poprat maticově.
Děkuji za rady
Hcimla
Kolemjdoucí

Odeslat příspěvekod Kurimak 7. 8. 2014 15:10

Kdyby se to řešilo maticovým vzorcem, spustilo by se nahrávání maker a zadal by se vzorec následujícím způsobem.
Označí se oblast A1:B2.
Do řádku vzorců se zadá =C1:D2*E1:F2
Potvrdí se klávesovou kombinací Ctrl Shift Enter.
Tím vznikne maticový vzorec, který je v řádku vzorců zobrazen se složenými závorkami: {=C1:D2*E1:F2}
Ve VBA se vzorec po nahrání makra objeví v následující podobě:
Range("A1:B2").FormulaArray = "=RC[2]:R[1]C[3]*RC[4]:R[1]C[5]"
Kurimak
Junior


Kdo je online

Uživatelé procházející toto fórum: Žádní registrovaní uživatelé a 0 návštevníků