エクセルでセルに入力した文字列を数式に変換するには、手動の場合だといちいちセルをクリックして「=」を入力しなくてはなりません。
VBAを使えば一括して変換することができます。
今回は、VBAを使ってセルの文字列を数式に変換する方法について徹底的に説明していきます。
VBAでセルの文字列を数式に変換する方法
数式として認識されるためには?
セルに数式を入力したつもりが、頭に「=」を付けないと数式として認識されません。
当然、計算もされません。
数式にするためには、頭に「=」を書き加えなくてはなりません。
例えば、セル「A7」に SUM(A1 : A5) と入力しても、頭に「=」を記述しないと、数式として認識されず、単なる文字列として認識されてしまいます。
数式として認識させるためには、=SUM(A1 : A5) と記述する必要があります。
単独セルの文字列を数式に変換する方法
以上のことを踏まえて、セル「A7」の文字列 SUM(A1 : A5) をVBAを使って数式に変換してみると、以下のコードのようになります。
文字列を数式に変換するコード:
Sub 文字列を数式に変換()
Range("A7").Formula = "=" & Range("A7")
End Sub
実行結果:
実行すると、頭に「=」が付き、計算結果が表示されます。
文字列を数式に変換させるには、1行ですみます。
セル「A7」の文字列 SUM(A1 : A5) の頭に「&」を使って「=」を付けて、Formulaプロパティを使って数式として計算します。
それでは、複数のセルの文字列を数式に変換するには、どのようにすればよいでしょうか?次の項目で説明します。
複数のセルの文字列を数式に変換する方法
ドラッグで選択した複数のセルの文字列を数式に変換するには、該当セルが文字列なのか数式なのかを判断しなくてはなりません。
数式の有無の判断には、HasFormulaプロパティを使います。
構文:Rangeオブジェクト. HasFormula
HasFormulaプロパティは、指定したセル範囲のすべてのセルに数式がある場合には「True」、すべてのセルに数式が無い場合には「False」、それ以外の場合には「Null」が返ります。
複数のセルの文字列を数式に変換するサンプルコードは以下のとおりです。
Sub 複数セルの数式変換()
Dim Rng As Range
Dim moji As Variant
Set Rng = Selection '選択したセルをセットする
For Each moji In Rng
If Not moji.HasFormula And VarType(moji) = vbString Then 'セルが数式か文字列かチェックする
If Not IsError(Evaluate(moji.Value)) Then
moji.Formula = "=" & moji.Value
End If
End If
Next moji
End Sub
実行前:
文字列が入ったセルをドラッグした状態で、マクロを実行します。
実行結果:
7行目の文字列が数式に変換され、計算結果が入力されます。
【まとめ】VBAでセルの文字列を数式に変換する方法
数式にするためには、頭に「=」を書き加えなくてはなりません。
文字列の頭に「&」を使って「=」を付け、Formulaプロパティを使って数式として計算します。
複数セルの文字列を数式に変換するとき際には、数式の有無の判定をするためにHasFormulaプロパティを使います。
エクセルでは文字列を数式に変換しなくてはならないことがあります。
今回の記事をぜひ活用してくださいね。
コメント