Kezdőoldal » Számítástechnika » Programozás » Mi lehet a gond a VBA geometri...

Mi lehet a gond a VBA geometriai átlag kódommal? (Nem kezel oszlopvektort)

Figyelt kérdés

A kódom az alábbi:


Function geometriai(a)

Dim s As Single

n = a.Count

s = 0

For i = 1 To n

s = s + Log(a(i))

Next i

f = Exp(s)

geometriai = f ^ (1 / n)

End Function


valamiért csak sorvektort tud lekezelni, oszlopvektort nem. Nekem pedig pont oszlopvektor geometriai átlaga kellene.


Kérdés, hogy mit csináljak vele, hogy kezeljen oszlopvektort is?



#VBA #oszlopvektor #geometriai átlag
2015. febr. 26. 09:09
 1/6 anonim ***** válasza:

Programozásban nincs olyan hogy sor illetve oszlopvektor. Matematikában van, és ha transzponálod az oszlopvektort akkor sorvektor lesz belőle. Programozásban tömb van. Értékek sorozata. Ha a függvényed nem kezel egy máik struktúrát mint amire tervezték, akkor az nem a függvény hibája, hanem azé aki meghívta a függvényt rosszul strukturált adattal. Alakítsd előtte olyanná a vektorod amit kezel a függvényed. Ehhez írnod kell egy transzponáló függvényt.


Vagy írd le hogy mit kap paraméterül a függvényed és akkor többet tudunk segíteni. Egy multidimenziós tömböt azaz egy mátrixot? Akkor a legtisztább ha két egymásba ágyazott ciklussal végigmész az elemein, függetlenül attól hogy csak 1xn vagy nx1-es lehet.

2015. febr. 26. 11:36
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:

Van 1000 darab részvény árfolyamom (S(t)) a B1:B1001, aztán ebből megcsináltam a napi loghozamokat (ln(S(t+1)/S(t)) a C1:C1001 tartományba. Ezeknek kellene a mértani átlaga, mondjuk a D1 cellába.


Hogyan módosítsam a fenti kódot, hogy azt csinálja az excel amit én szeretnék?



A beillesztett kód működik, ha például az A1:J1 tartományba beírom a számokat 1-től 10-ig, ezért gondoltam, hogy valamiért még sem tud oszlopvektorban gondolkodni.

2015. febr. 26. 11:46
 3/6 A kérdező kommentje:
tehát egy 1001x1-es mátrixot kéne kezeljen, hogy a kérdésedre is válaszoljak
2015. febr. 26. 11:48
 4/6 A kérdező kommentje:
megvan... a negatív számokkal van a baj, valahogy ezt kéne kiküszöbölnöm
2015. febr. 26. 12:05
 5/6 A kérdező kommentje:

Function geometriai(a)

m = a.Rows.Count

n = a.Columns.Count

s = a(1, 1)

For i = 1 To m

For j = 1 To n

s = s * a(i, j)

Next j

Next i

geometriai = s ^ (1 / (m * n))

End Function


ez a végleges kód. Most már csak egy kérdésem van, hogy miért nem tud kb. 150-nél több cellát lekezelni a függvényem?

2015. febr. 26. 12:31
 6/6 A kérdező kommentje:
az is megvan :D köszönöm a hozzászólást, azért segített, amit írtál, mert így ez a tömb fogalom is a helyére került
2015. febr. 26. 12:41

Kapcsolódó kérdések:




Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!