Prosím o pomoc s tímto v Excel 2007, makro ve VBA:
Mám trojrozměrné pole z tabulek: data(x,y,z):
- x: akcie třeba 100 položek
- y: datum 5.000 řádků
- z: O,H,L,C ceny, volume atd. 7 sloupců
Potřebuji určit korelace průběhů Close cen (tedy vždy dat z jednoho sloupce) všech akcií vzájemně (každý s každým) a to pouze za požadované období, které se může měnit dle zadání.
Teď to pomocí VBA dělám tak, že ceny (vždy jen jednu cenu: Close) z pole vypíšu do listu a pak makrem vkládám do korelační tabulky vzorce, které mi pro vypsaná data spočítají korelace. To má nevýhodu v dlouhé době trvání výpisu vzorců na list.
Vzorec pro korelaci přímo jako funkci VBA jsem nenašel. Když jsem našel způsob jak použít funkci z listu v kódu VBA, tak mě nenapadá, jak do vzorce, kam se zadává oblast dat, zapsat požadovanou část pole.
Lze spočítat korelace přímo pomocí pole bez výpisu vzorců na list a pak vypsat jen výsledky také z (výsledkového) pole? Myslím, že by to mohlo být celkem rychlejší a ušetří mi to další list s jinak zbytečnými daty v sešitu.
Díky.
Korelace pole, VBA - Excel 2007 Vyřešeno
Korelace pole, VBA - Excel 2007
diky všem za rady
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Korelace pole, VBA - Excel 2007
Konstrukce je nasledujici (priklad):
Kód: Vybrat vše
Dim SumBlk1 As Range, SumBlk2 As Range, SumBlk3 As Range
' aktivni list
Set SumBlk1 = ActiveSheet.Range("a1:a5")
' list3
Set SumBlk2 = Worksheets("list3").Range("b1:b5")
' sumblk je nazev (pojmenovana oblast) na nekterem listu - napr.: list3!C1:C5
Set SumBlk3 = Range("sumblk")
Debug.Print WorksheetFunction.Sum(SumBlk1, SumBlk2, SumBlk3)
Re: Korelace pole, VBA - Excel 2007
Díky.
Zhruba takhle jsem uvažoval taky, respektive jsem už našel podobný kód.
Ještě doplňující otázka:
Jelikož popsaný kód pracuje s jednorozměrnými poli a já s trojrozměrným polem, lze to nějak vyřešit přímo s trojrozměrným polem abych nemusel plnit jenorozměrná pole?
To už je ale opravdu jenom vedlejší otázka, naplnit jednorozměrné pole nepředstavuje problém a chod kódu by to nemělo zdržovat.
Zhruba takhle jsem uvažoval taky, respektive jsem už našel podobný kód.
Ještě doplňující otázka:
Jelikož popsaný kód pracuje s jednorozměrnými poli a já s trojrozměrným polem, lze to nějak vyřešit přímo s trojrozměrným polem abych nemusel plnit jenorozměrná pole?
To už je ale opravdu jenom vedlejší otázka, naplnit jednorozměrné pole nepředstavuje problém a chod kódu by to nemělo zdržovat.
diky všem za rady
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Korelace pole, VBA - Excel 2007
To je trochu obecna otazka.
Jednotlive rozmery pole budes muset nacist ve smyckach, neco na tento zpusob:
Jednotlive rozmery pole budes muset nacist ve smyckach, neco na tento zpusob:
Sub PrevodOblastiDo2DPole()
Dim Pole1()
Dim Pole2()
Dim m
Dim n
Pole1 = Selection
m = Selection.Rows.Count
n = Selection.Columns.Count
ReDim Pole2(1 To m, 1 To n)
For i = 1 To m
For j = 1 To n
Pole2(i, j) = Selection.Cells(i, j)
Next j
Next i
End Sub
Re: Korelace pole, VBA - Excel 2007
... asi si nerozumíme
ale i tak děkuju.
Ta poslední otázka byla o tom, že já mám třírozměrné pole plné dat a z těchto dat chci spočítat korelace pomocí WorksheetFunction.
... a jde mi to , jestli je nějaký způsob, kdy WorksheetFunction.Correl pracuje přímo s tím trojrozměrným polem. Prostě jsem jen zvědavý, jestli musím data nejprve přelít do jendorozměrných polí nebo jestli lze nějak pracovat pouze s tím trojrozměrným polem, kde už data jsou.
Podotýkám, že data jsou pouze v poli - kam jsem je načetl z internetového zdroje a nejsou tedy na listu.

Ta poslední otázka byla o tom, že já mám třírozměrné pole plné dat a z těchto dat chci spočítat korelace pomocí WorksheetFunction.
... a jde mi to , jestli je nějaký způsob, kdy WorksheetFunction.Correl pracuje přímo s tím trojrozměrným polem. Prostě jsem jen zvědavý, jestli musím data nejprve přelít do jendorozměrných polí nebo jestli lze nějak pracovat pouze s tím trojrozměrným polem, kde už data jsou.
Podotýkám, že data jsou pouze v poli - kam jsem je načetl z internetového zdroje a nejsou tedy na listu.
diky všem za rady
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Korelace pole, VBA - Excel 2007
Prechozi dotaz jsem prilis hluboce nezkoumal, pro ta odpoved.
Na dalsi dotaz odpovim otazkou, umi funkce listu Correl pracovat s vicerozmernym polem?
Na dalsi dotaz odpovim otazkou, umi funkce listu Correl pracovat s vicerozmernym polem?
Re: Korelace pole, VBA - Excel 2007
já vím, že neumí
ale jako ouplnej amatér se zajímám, jak zkrátit kód a případně jak to pořešit elegantně. Nevím, jestli není nějaký způsob jak v trojrozměrném poli definovat určenou množinu dat právě pro zmiňovanou funkci.

ale jako ouplnej amatér se zajímám, jak zkrátit kód a případně jak to pořešit elegantně. Nevím, jestli není nějaký způsob jak v trojrozměrném poli definovat určenou množinu dat právě pro zmiňovanou funkci.

diky všem za rady
-
- Level 4
- Příspěvky: 1142
- Registrován: srpen 08
- Pohlaví:
- Stav:
Offline
Re: Korelace pole, VBA - Excel 2007
Doba, kdy bylo nutno z duvodu vykonu procesoru a kapacity pameti vymyslet usporna reseni jsou jiz minulosti.
Program by mel byt citelny a umoznovat pripadne pozdeji upravy, aniz by bylo nutno pracne lustit, jak program pracuje. A i autor po nejake dobe u slozitejsich konstrukci nevericne zira, co napsal.
Takze prehledne a logicky byt sloziteji, vyplati se to.
Mas-li zajem, precti si zde: http://www.excelvba.estranky.cz/clanky/ ... iky-navody - Úvaha nad úvahou a Úvaha - zápis programového kódu
Program by mel byt citelny a umoznovat pripadne pozdeji upravy, aniz by bylo nutno pracne lustit, jak program pracuje. A i autor po nejake dobe u slozitejsich konstrukci nevericne zira, co napsal.
Takze prehledne a logicky byt sloziteji, vyplati se to.
Mas-li zajem, precti si zde: http://www.excelvba.estranky.cz/clanky/ ... iky-navody - Úvaha nad úvahou a Úvaha - zápis programového kódu
Re: Korelace pole, VBA - Excel 2007 Vyřešeno
Jo jo.. přehlednosti rozumím, proto jsem zvědavý jak to dělat elegantně, což zpravidla znamená i přehledně.
Zatím děkuju za pomoc.

Zatím děkuju za pomoc.
diky všem za rady
-
- Mohlo by vás zajímat
- Odpovědi
- Zobrazení
- Poslední příspěvek
-
-
EXCEL -jak otevřít 2 excel sobory abych je viděla současne a samostatně
od Ketty02 » 30 srp 2024 21:19 » v Vše ostatní (sw) - 2
- 5138
-
od Riviera kid
Zobrazit poslední příspěvek
02 zář 2024 16:21
-
-
- 2
- 12540
-
od Snekment
Zobrazit poslední příspěvek
29 led 2025 15:05
-
- 1
- 5875
-
od atari
Zobrazit poslední příspěvek
07 kvě 2025 09:41
-
- 3
- 3533
-
od lubo.
Zobrazit poslední příspěvek
24 říj 2024 00:00
-
- 5
- 4138
-
od atari
Zobrazit poslední příspěvek
26 dub 2025 09:11
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 2 hosti