Hi,
ich bräuchte drngend Hilfe bei einem VBA-Code in Excel, der nicht funktioniert. Ich bekomme immer #Wert als Antwort.
Der Code soll die VLambda Kurve, zu der ich einzelne Datenpunkte gegeben habe, annähern, damit ich die zu den Werten zwischen den bereits gegebenen Datenpunkten ebenfalls den Y-Wert bestimmen kann. Da die Punkte so dicht beeinander liegen und es von der Genauigkeit genügt, nähere ich das ganze durch lineare Regression an. Dazu bestimme ich zuerst den x- wert (vL_X1), welcher dem übergebenem x Wert (X) am nächsten liegt. Dies geschieht mittels for Schleife (der Datensatz der VLambda Kurve umfasst 1024 Messwerte)
Anbei der Code
Public Function VLambda(X As Double) As Double
Dim vL_X1 As Double
Dim vL_X2 As Double
Dim vL_Y1 As Double
Dim vL_Y2 As Double
Dim vL_test As Double
Dim i As Integer
Dim s_i As Integer
vL_X1 = Worksheets("V_Lambda").Cells(2, 1).Value - X
For i = 3 To 1025
vL_test = Worksheets("V_Lambda").Cells(i, 1).Value
If Application.WorksheetFunction.Abs(vL_test - X) < Application.WorksheetFunction.Abs(vL_X1) Then
vL_X1 = vL_test
s_i = i
End If
Next i
If vL_X1 <= 0 Then
vL_Y1 = Worksheets("V_Lambda").Cells(s_i, 2).Value
vL_X2 = Worksheets("V_Lambda").Cells(s_i + 1, 1).Value
vL_Y2 = Worksheets("V_Lambda").Cells(s_i + 1, 2).Value
Else
vL_X2 = vL_X1
vL_Y2 = Worksheets("V_Lambda").Cells(s_i, 2).Value
vL_X1 = Worksheets("V_Lambda").Cells(s_i - 1, 1).Value
vL_Y1 = Worksheets("V_Lambda").Cells(s_i - 1, 2).Value
End If
VLambda = (vL_Y2 - vL_Y1) / (vL_X2 - vL_X1) * (X - vL_X1) + vL_Y1
End Function
ich weiß, dass ich mit meinem Zugriff auf die Zellen s_i -+1 aus dem Bereich der definierten Zellen laufen könnte, jedoch ist dies momentan nicht das Problem.
Danke schonmal für eure Hilfe.
freundliche Grüße
Sascha24
|