数式表示関数
以前に MOUG の回答で作ったユーザー定義関数です。
一言で言うと、数式の中身を見るための関数です。
例えば、セルA1 に数式が入っているとします。
そのときに、この関数を使って =FormulaValue(A1) とすると、セルの参照先を見て数式で使っている値を表示した数式を返します。
Function FormulaValue(ArgCell As Range) As Variant Dim wkF As String Dim aryD As Variant Dim i As Variant Dim V As Variant Dim j As Long Dim Num As Variant aryD = Array("=", "<", ">", "(", ")", "+", "-", "*", "/", "^", "&", " ") wkF = ArgCell.Formula For Each i In aryD wkF = Replace(wkF, i, vbTab & i & vbTab) Next i V = Split(wkF, vbTab) For j = LBound(V) To UBound(V) If Not IsNumeric(V(j)) Then Num = Application.Evaluate(V(j)) If Not IsError(Num) Then V(j) = Num End If End If Next j FormulaValue = Replace(Join(V, vbTab), vbTab, "") End Function
あまり完成度の高くないコードなので、数式次第では期待した結果を返さない場合があります。
例えば、数式内に文字列があり、それがセルアドレスとaryDで使っている区切りで構成される場合などがそうです。