Interpolera data i Access/SQL mha VBA

Permalänk
Medlem

Interpolera data i Access/SQL mha VBA

Goddag.

Jag har en del data som skulle behöva interpoleras fram i en tabell med hjälp av vanlig linjär interpolation.

Jag har tre kolumner, datum, X-data och Y-data.

Om det finns data i X-kolumnen men inte i Y-kolumnen så ska den interpolera fram det värdet med hjälp av de två närliggande positionerna (och inte ta på hela intervallet). Den ska bara använda värden från samma datum.

t ex

X
5
30
35

Y
0,5
-
1,5

Här ska värdet för Y(X=30) estimeras.

Jag har fått nedan kod att fungera men den använder hela intervallet och bryr sig inte alls om datumkolumnen. Någon som har lust att hjälpa lite?:)

Blad2 = min tabell.

Option Compare Database

Option Explicit
Dim m As Double, b As Double

%%%%
Sub sInterpolation()
Dim strSQL As String

Call sRegressionLine
strSQL = "UPDATE Blad2 SET Blad2.Y = " & _
"(" & Replace(m, ",", ".") & ")" & " * [X] + (" & Replace(b, ",", ".") & ")" & _
"WHERE (((Blad2.Y) Is Null) AND ((Blad2.X) Is Not Null));"
CurrentDb.Execute strSQL
End Sub

%%%%

Sub sRegressionLine()
Dim dbs As Database, rcs As Recordset
Set dbs = CurrentDb()
Set rcs = dbs.OpenRecordset("SELECT Sum(Blad2.X) AS SumX, " & "Sum([X]*[X]) AS SumXX, Sum(Blad2.Y) AS SumY, Sum([X]*[Y]) AS SumXY, " & _
"Count(Blad2.X) AS N FROM Blad2 " & _
"WHERE (((Blad2.X) Is Not Null) AND ((Blad2.Y) Is Not Null));")
m = (rcs!N * rcs!SumXY - rcs!SumX * rcs!SumY) / (rcs!N * rcs!SumXX - rcs!SumX ^ 2)
b = (rcs!SumY * rcs!SumXX - rcs!SumX * rcs!SumXY) / (rcs!N * rcs!SumXX - rcs!SumX ^ 2)