Stránka 1 z 1

Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 6. 8. 2014 13:55
od Hcimla
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

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 6. 8. 2014 19:55
od Chipoun
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í.

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 6. 8. 2014 21:10
od Eagle
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.

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 7. 8. 2014 06:06
od Hcimla
A není tedy nějaká jiná možnost jak pracovat s celým polem?

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 7. 8. 2014 06:54
od Chipoun
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í.

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 7. 8. 2014 07:46
od cirneco
Excel umi i praci s maticemi. Zkusil bych popatrat touto cestou. (Nahrat makro s maticovou operaci - jak to naskriptuje, apod.)

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 7. 8. 2014 11:27
od Hcimla
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

Re: Excel - VBA práce s celou oblastí

Odeslat příspěvekNapsal: 7. 8. 2014 15:10
od Kurimak
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]"