2016-08-04 5 views
0

Ich versuche, die Log-Returns einer Aktie zu berechnen nach der Formel:
X=log(pt)-log(pt-1)
und den Makrocode ich gemacht habe, funktioniert nicht:Excel VBA-Log-Returns on Assets mit Makro

runtime error Q invalid procedure call or argument 

Irgendwelche Vorschläge?

Private Sub CommandButton1_Click() 

Dim row As Integer 
row = 9 


Do While Cells(row, 2) <> "" 
Cells(row, 4).Value = log(Cells(row + 1, 2).Value) - log(Cells(row, 2).Value) 
row = row + 1 
Loop 


End Sub 
+2

Was genau funktioniert nicht? Erhalten Sie einen Fehler irgendeiner Art (welcher Fehler?), Oder ist die Ausgabe gerade nicht, was Sie erwarteten? – Mikegrann

+0

gibt es eine LaufzeitfehlerQ Invallid Procedure Aufruf oder Argument –

Antwort

1

Sie liefen außerhalb der Grenzen Ihrer Daten. Wenn Cells(row, 2) in die letzte Zeile Ihrer Daten gelangt, versuchen Sie, etwas auszuwerten, das Log(Number) - Log(0) entspricht, da Cells(row + 1, 2) leer ist und standardmäßig 0 ist. Und natürlich ist Log(0) ungültig und löst einen Fehler aus.

Korrigieren Sie dies, indem Sie Ihre Schleife anpassen (beginnen Sie bei der zweiten Zeile und rechnen Sie mit der darüber liegenden Zelle).

Private Sub CommandButton1_Click() 

Dim row As Integer 
row = 10 


Do While Cells(row, 2) <> "" 
    Cells(row - 1, 4).Value = Log(Cells(row, 2).Value) - Log(Cells(row - 1, 2).Value) 
    row = row + 1 
Loop 


End Sub 
+0

Sie sind super. vielen Dank –