ここでは ユーザー入力に応じて数式を自動生成するフォーム と、複数条件を組み合わせた高度な数式生成 の例を紹介します。初心者でも「なるほど!」と思えるように、具体的なコード付きで解説します。
ユーザー入力に応じて数式を自動生成するフォーム
例1: InputBoxで数式を作る
ユーザーに「掛け算する数」を入力してもらい、その値を使って数式を自動生成します。
Sub ユーザー入力で数式生成()
Dim factor As Integer
Dim c As Range
' ユーザーに掛け算の係数を入力してもらう
factor = InputBox("掛け算する数を入力してください")
' B列に数式を自動生成
For Each c In Range("B2:B6")
c.Formula = "=A" & c.Row & "*" & factor
Next c
End Sub
VB👉 ユーザーが「3」と入力すれば、B列に「=A23」「=A33」…と自動で数式が入ります。
複数条件を組み合わせた高度な数式生成
例2: 値に応じて異なる数式を入れる
セルの値を見て、条件ごとに違う数式を生成します。
Sub 複数条件で数式生成()
Dim c As Range
For Each c In Range("C2:C6")
If IsNumeric(c.Value) Then
Select Case c.Value
Case Is < 0
' 負の数なら絶対値を返す
c.Offset(0, 1).Formula = "=ABS(C" & c.Row & ")"
Case 0
' 0なら「平均」を返す
c.Offset(0, 1).Formula = "=AVERAGE(A2:A10)"
Case Is > 0
' 正の数なら「2倍」を返す
c.Offset(0, 1).Formula = "=C" & c.Row & "*2"
End Select
End If
Next c
End Sub
VB👉 C列の値に応じて、D列に「ABS」「AVERAGE」「掛け算」の数式が自動で入ります。
例3: 複数条件+文字列判定
数値だけでなく文字列も条件にできます。
Sub 複数条件と文字列判定()
Dim c As Range
For Each c In Range("A2:A6")
Select Case c.Value
Case "売上"
c.Offset(0, 1).Formula = "=SUM(B2:B10)"
Case "平均"
c.Offset(0, 1).Formula = "=AVERAGE(B2:B10)"
Case "最大"
c.Offset(0, 1).Formula = "=MAX(B2:B10)"
Case Else
c.Offset(0, 1).Value = "対象外"
End Select
Next c
End Sub
VB👉 「売上」と書けば合計式、「平均」と書けば平均式…と自動で数式が変わります。
ポイントまとめ
- ユーザー入力 →
InputBoxを使うと簡単に値を受け取れる - 複数条件 →
IfやSelect Caseで条件分岐 - 数式生成 →
"=A" & c.Row & "*2"のように文字列を組み立てる - 結果を入れる場所 →
c.Offset(0,1)で隣の列に数式を入れる
練習課題
- ユーザーに「掛け算する列番号」を入力させ、その列を参照する数式を自動生成する
- 「セルの値が100以上なら掛け算、50~99なら足し算、49以下なら平均」といった複数条件を組み合わせた数式を作る
- 「文字列+数値」の両方を判定して、数式を切り替えるコードを書いてみる
こうした仕組みを使うと、ユーザーが入力した条件に応じて自動的に数式を作る「柔軟なフォーム」や、複雑な条件付き計算をVBAで自由に構築できます。


