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)