Makro Lineare Interpolation (und Extrapolation)
26.01.2007 11:49:21
Doro
ich habe eine Funktion, welche zwei Spalten einliest, und als Ergebnis einen interpolierten (oder auch extrapolierten) Wert ausgibt (siehe Quelltext unten). Das funktioniert auch, wenn die beiden Spalten komplett ausgefüllt sind, oder wenn die ersten Einträge ausgefüllt sind, und dann leere Zellen kommen. Ich habe aber die folgende Formel in der Zelle:
=WENN(ODER(ISTLEER(C5);ISTLEER(D5);ISTLEER(E5));"";D5-E5)
Dadurch wird in der Zelle zwar nichts angezeigt, aber die Funktion liefert als Fehlerwert #WERT!. Ich vermute, dass die Zelle nicht als leer erkannt wird.
Hat jemand ne Idee, wie man das Makro dahingehend ändern kann, dass es auch bei eigentlich leeren Zellen, in denen Formeln stehen, funktioniert?
Viele Grüße,
Doro
Public
Function LIP(xVector As Range, yVector As Range, xValue As Long)
Dimension = xVector.Cells.Count
If xValue < xVector.Cells(1).Value Or xValue > xVector.Cells(Dimension).Value Then
If xValue < xVector.Cells(1).Value Then
m = (yVector.Cells(2) - yVector.Cells(1)) / (xVector.Cells(2) - xVector.Cells(1))
n = yVector.Cells(2) - m * xVector.Cells(2)
Else
m = (yVector.Cells(Dimension) - yVector.Cells(Dimension - 1)) / (xVector.Cells(Dimension) - xVector.Cells(Dimension - 1))
n = yVector.Cells(Dimension) - m * xVector.Cells(Dimension)
End If
LIP = m * xValue + n
Else
For i = 2 To Dimension
If xValue <= xVector.Cells(i).Value Then Exit For
Next i
LIP = yVector.Cells(i - 1).Value _
+ (xValue - xVector.Cells(i - 1).Value) / (xVector.Cells(i).Value - xVector.Cells(i - 1).Value) _
* (yVector.Cells(i).Value - yVector.Cells(i - 1).Value)
End If
End Function