欠損値を線形補間するExcelマクロについて説明する。
はじめに
\(f=f\left(x\right)\)となるような関数において、下の図のように欠損値があった場合に、前後の\(f\left(x\right)\)の値から欠損値を線形補完する自作Excel関数(マクロ)について紹介する。
ソースコード
ソースコードはこれ
Function InterpolationLinear(ByVal x As Double, ByVal x1 As Double, ByVal f1 As Double, ByVal x2 As Double, ByVal f2 As Double) As Double
'1:start, 2:end
Dim f As Double
Dim i As Long
'Get interpolated values against x
If x2 <> x1 Then
f = f1 + (f2 - f1) / (x2 - x1) * (x - x1)
Else
f = f1
End If
InterpolationLinear = f
End Function
線形補間のいつもの式
\begin{align}
f=f_{1}+\frac{f_{2}-f_{1}}{x_{2}-x_{1}}\left(x-x_{1}\right)
\end{align}
をマクロにしただけである
使い方
使い方は以下の通り
=interpolationLinear(x,始点のx1,始点のy1,終点のx2,終点のy2)
↓参考のマクロ付きブックはこちら
excel-vba-NaN-linear-interpolation.xlsm
1 ファイル 29.38 KB
既知のxの範囲外を線形外挿したい場合は、組み込み関数であるFORECAST関数を組み合わせる必要がある。
おわりに
欠損値を線形補間するExcelマクロについて説明した。
↓関連記事
コメント