Excel Lineare Interpolation VBA
diese Funktion interpoliert/extrapoliert eine Tabelle der bekannten x -, y -
Zum Beispiel,
x y
1 10
2 15
3 20
Linterp(A1:B3, -1) = 0
Jedoch, dieser code kann nur tun, zwei benachbarten arrays.
Ich möchte diesen code ändern so dass ich
wählen Sie zwei separate arrays, zum Beispiel N106:N109,P106:P109.
Wie kann ich diese Einstellung in diesem code?
Function Linterp(r As Range, x As Double) As Double
' linear interpolator /extrapolator
' R is a two-column range containing known x, known y
Dim lR As Long, l1 As Long, l2 As Long
Dim nR As Long
'If x = 1.5 Then Stop
nR = r.Rows.Count
If nR < 2 Then Exit Function
If x < r(1, 1) Then ' x < xmin, extrapolate
l1 = 1: l2 = 2: GoTo Interp
ElseIf x > r(nR, 1) Then ' x > xmax, extrapolate
l1 = nR - 1: l2 = nR: GoTo Interp
Else
' a binary search would be better here
For lR = 1 To nR
If r(lR, 1) = x Then ' x is exact from table
Linterp = r(lR, 2)
Exit Function
ElseIf r(lR, 1) > x Then ' x is between tabulated values, interpolate
l1 = lR: l2 = lR - 1: GoTo Interp
End If
Next
End If
Interp:
Linterp = r(l1, 2) _
+ (r(l2, 2) - r(l1, 2)) _
* (x - r(l1, 1)) _
/ (r(l2, 1) - r(l1, 1))
End Function
Wenn eine diskontinuierliche Reihe ist vergangen, Sie können erkennen, dass die Verwendung
Sorry aber ich bin neu in VBA. was bedeutet r.Gebieten.Zählen Sie genau tun?
r.Areas.Count
Sorry aber ich bin neu in VBA. was bedeutet r.Gebieten.Zählen Sie genau tun?
InformationsquelleAutor AccessExcelVBA | 2016-04-06
Du musst angemeldet sein, um einen Kommentar abzugeben.
einer sehr einfachen Art und Weise ist mit der Funktion akzeptiert zwei Bereichen in-Eingang, einen für die X-Werte (z.B. rX) und eine für die Y-Werte (sagen wir r), und dann ändern alle vorkommen von
r(foo,1)
zurX(foo)
undr(foo,2)
zurY(foo)
wie folgt
aber müssen Sie code implementieren, um zu überprüfen, für die Konsistenz der beiden Bereiche, wie die sowohl in der einen Spalte jeweils und mit der gleichen Anzahl von Zeilen
InformationsquelleAutor user3598756