Newsgroup: it.comp.lang.visual-basic
Titolo: Aiuto Macro VBA

Salve a tutti,
ho una Macro in VBA (presa da Internet) che serve per calcolare l'esponente
di Hurst di una serie storica di dati. La Macro č stata scritta in modo
generico (cioč devo modificarla, suppongo, con i dati del mio foglio di
lavoro: nome foglio, celle ecc...), ma proprio non mi riesce di farla
funzionare. Premetto che io conosco quasi nulla di linguggi di
programmazione, quindi gradirei un aiuto da parte vostra per modificare la
macro e renderla funzionante, immaginando di inserire i dati (i rendimenti
lognormali) dalla cella A1 alla cella A300. Se qualcuno potesse mandarmi in
email un foglio con la macro funzionante sarebbe un grande aiuto. Copio e
incollo la macro cosě l'ho io comprese le due righe di spiegazione che
l'autore ha lasciato.
Grazie per l'attenzione
----------------------------
"Metti i dati che vuoi analizzare nella colonna A (in realta' devi mettere i
rendimenti lognormali della serie storica) e poi attivi la seguente macro
VBA...
Alla fine ottiene il coefficiente di Hurst."
Sub Hurst()
Dim Data()
Dim Array1()
Dim Array2()
Dim Mean
Dim Result()
Dim NoOfDataPoints As Integer
Dim NoOfPlottedPoints As Integer
Dim PlottedPointNo As Integer
Dim NoOfPeriods As Integer
Dim PeriodNo As Integer
Dim N As Integer
Dim i As Integer
Dim m As Integer
Dim logten
Dim R
Dim S
Dim RS
Dim SumSquared
logten = Log(10)
'Cancella ogni dato precente
Worksheets("Data").Range("C3").Value = Null
Worksheets("Data").Range("D : D").Value = Null
Worksheets("Data").Range("E:E").Value = Null
'Ottieni il numero totale dei dati
NoOfDataPoints = Worksheets("Data").Range("C1").Value
ReDim Data(NoOfDataPoints)
'Ignorando gli spazi!
i = 1
counter = 1
Do While counter <= NoOfDataPoints
Set curCell = Worksheets("Data").Cells(i, 1)
If Application.WorksheetFunction.IsNumber(curCell.Value) Then
Data(counter) = curCell.Value
counter = counter + 1
End If
i = i + 1
Loop
NoOfPlottedPoints = NoOfDataPoints - 2
ReDim Result(NoOfPlottedPoints, 2)
'Comincia il loop principale
For N = 3 To NoOfDataPoints
totalR = 0
totalS = 0
NoOfPeriods = NoOfDataPoints - N + 1
For PeriodNo = 1 To NoOfPeriods
ReDim Array1(N)
ReDim Array2(N)
For i = 1 To N
Array1(i) = Data((PeriodNo - 1) + i)
Array2(i) = 0
Next i
Summ = 0
SumSquared = 0
For i = 1 To N
Summ = Summ + Array1(i)
SumSquared = SumSquared + ((Array1(i)) * (Array1(i)))
Next i
Mean = Summ / N
'STDEV
'S = Sqr((SumSquared - (Summ * Summ) / N) / (N - 1))
'STDEVP
S = Sqr((SumSquared - (Summ * Summ) / N) / N)
For i = 1 To N
Array1(i) = Array1(i) - Mean
Next i
For i = 1 To N
For j = 1 To i
Array2(i) = Array2(i) + Array1(j)
Next j
Next i
Maxi = Array2(1)
Mini = Array2(1)
For i = 1 To N
If Array2(i) > Maxi Then Maxi = Array2(i)
If Array2(i) < Mini Then Mini = Array2(i)
Next i
R = Maxi - Mini
totalR = totalR + R
totalS = totalS + S
Next PeriodNo
R = totalR / NoOfPeriods
S = totalS / NoOfPeriods
RS = R / S
PlottedPointNo = N - 2
Result(PlottedPointNo, 1) = (Log(N)) / logten
Result(PlottedPointNo, 2) = (Log(RS)) / logten
Next N
Sumx = 0
Sumy = 0
Sumxy = 0
Sumxx = 0
For i = 1 To NoOfPlottedPoints
Worksheets("Data").Cells(i + 6, 4).Value = Result(i, 1)
Worksheets("Data").Cells(i + 6, 5).Value = Result(i, 2)
Sumx = Sumx + Result(i, 1)
Sumy = Sumy + Result(i, 2)
Sumxy = Sumxy + (Result(i, 1)) * (Result(i, 2))
Sumxx = Sumxx + (Result(i, 1)) * (Result(i, 1))
Next i
' Infine, calcola 'sto benedetto esponente di Hurst
H = (Sumxy - ((Sumx * Sumy) / NoOfPlottedPoints)) / (Sumxx - ((Sumx * Sumx)
/ NoOfPlottedPoints))
Worksheets("Data").Range("C3").Value = H
End Sub

 incollo la macro così l'ho io comprese le due righe di spiegazione che


 ha scritto nel messaggio
news:RWp3a.120341$YG2.3...@twister1.libero.it...


 pagina.
Sě, si vede, anche qui... e fanno altri 6 Kb. Era necessario ripeterlo?

 ha scritto nel messaggio
news:b2ldtv$1cm907$1...@ID-174464.news.dfncis.de...

Scusami, ma non sono pratica di newsgroup e il messaggio di Epoch lasciava
intendere che lui non vedesse niente, perciň non ho cancellato nulla.
Ciao
Penny

 Scusami, ma non sono pratica di newsgroup e il messaggio di Epoch lasciava
Pur essendo Mezzogiorno passato dormivo ancora......

 di Hurst di una serie storica di dati.
Premetto che non so cosa sia l'esonente l'esponente di Hurst, ho provato la
macro e qualcosa sforna....
Devi impostare per farla funzionare:
        --- Un foglio di nome "data".
        --- Nella colonna A metti i valori che vuoi analizzare
        --- Nella colonna C1 scrivi quanti sono questi valori
        --- Lanci la macro
        --- Nella colonna C3 trovi il valore cercato.
        --- Se ti servono (non so cosa sono) nelle colonne D e E ci sono dei
vlori utilizzati dalla macro per i calcoli intermedi.

 ha scritto nel messaggio
news:gNs3a.120836$ZE.33...@twister2.libero.it...
