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
-
-
Word 2007: Jak zrušit prázdné řádky na každé stránce mezi čarou a poznámkami?
od Jirka0508 » 29 pro 2023 00:30 » v Windows 11, 10, 8... - 1
- 1444
-
od mmmartin
Zobrazit poslední příspěvek
29 pro 2023 13:00
-
-
- 16
- 8447
-
od mirekol
Zobrazit poslední příspěvek
20 říj 2023 08:31
-
-
Excel komparacedvou soborů Příloha(y)
od teichmann.ondrej » 15 dub 2024 17:26 » v Kancelářské balíky - 11
- 4739
-
od teichmann.ondrej
Zobrazit poslední příspěvek
22 dub 2024 15:45
-
-
- 1
- 1587
-
od Grimm
Zobrazit poslední příspěvek
12 bře 2024 21:43
-
- 3
- 3236
-
od Story-Long
Zobrazit poslední příspěvek
14 srp 2023 10:11
Kdo je online
Uživatelé prohlížející si toto fórum: Žádní registrovaní uživatelé a 4 hosti