PR

【Excel VBA】欠損値を線形補間する自作Excel関数(マクロ)

欠損値を線形補間する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)

↓参考のマクロ付きブックはこちら

既知のxの範囲外を線形外挿したい場合は、組み込み関数であるFORECAST関数を組み合わせる必要がある。

おわりに

欠損値を線形補間するExcelマクロについて説明した。

↓関連記事

コメント