Excel VBA入門 その84:VBAでセルの文字列を数式に変換する方法

エクセルVBA VBA



エクセルでセルに入力した文字列を数式に変換するには、手動の場合だといちいちセルをクリックして「=」を入力しなくてはなりません。

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行目に入っている文字列を数式に変換する

文字列が入ったセルをドラッグした状態で、マクロを実行します。

実行結果:

7行目の文字列が数式に変換され、計算結果が入力される

7行目の文字列が数式に変換され、計算結果が入力されます。

【まとめ】VBAでセルの文字列を数式に変換する方法

数式にするためには、頭に「=」を書き加えなくてはなりません。

文字列の頭に「&」を使って「=」を付け、Formulaプロパティを使って数式として計算します。

複数セルの文字列を数式に変換するとき際には、数式の有無の判定をするためにHasFormulaプロパティを使います。

エクセルでは文字列を数式に変換しなくてはならないことがあります。

今回の記事をぜひ活用してくださいね。

コメント

タイトルとURLをコピーしました