セルに数式を入力する方法をご説明します。
セルに数式を入力するのと同様に、VBAでも文字列や数字だけはなく、数式を入力することが出来ます。
数式をループで記述させる方法、数式以外のおすすめの記述方法も併せて説明します。
その他のセルの操作方法については下記の記事をご覧ください。
数式を入力する
記述方法
セルに数式を入力するには、「=」を含めた数式を文字列として入力します。
文字列同様に“(ダブルクォーテーション)で囲います。
セルには結果が反映され、数式バーには入力した数式が反映されます。
数式は「Range(“A1”).Value = “=B1+C1”」の様にセルを指定することもできます。
サンプルコード
Range
Sub Sample1()
Range("A1").Value = "=1+1"
Range("B1").Value = "=A1+A1"
End Sub
Cells
Sub Sample2()
Cells(1, 1).Value = "=1+1"
Cells(1, 2).Value = "=A1+A1"
End Sub
結果
セルには計算結果が表示され、数式バーには数式が反映されています。
ループして数式を入力する
記述方法
数式を1つ1つセルへ入力するコードを記述するのは非常に非効率です。
ループで数式のセルを変更することで、記述をシンプルに可読性を上げることができます。
ループにはいくつか種類がありますが、使い勝手の良いカウント方式の「For~Next」を使ったコードを紹介します。
サンプルコード
Range
Sub Sample3()
Dim i As Long
For i = 1 To 10
Range("A" & i).Value = "=" & i & "+" & i
Range("B" & i).Value = "=A" & i & "+A" & i
Next i
End Sub
Cells
Sub Sample4()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Value = "=" & i & "+" & i
Cells(i, 2).Value = "=A" & i & "+A" & i
Next i
End Sub
結果
おすすめのサンプルコード
セルに数式を記述することが目的であれば、上記のサンプルのように文字列として数式を入力することで目的は達成されます。
ただし、文字列として扱うと記述が煩雑になりますので計算結果を算出することが目的であれば、数式を入力するよりも普通に計算させたほうがコードも簡略化できます。
Sub Sample5()
Dim i As Long
For i = 1 To 10
Cells(i, 1).Value = i + i
Cells(i, 2).Value = Cells(i, 1) + Cells(i, 1)
Next i
End Sub
結果
先ほどの数式と同じ結果になります。
細かく「”」や「&」を使わずに同じ結果が出力されますので、おすすめです。
数式バーにも数式ではなく、結果の数値が表示されています。