Excel VBA | ユーザー入力に応じて数式を自動生成するフォームと複数条件を組み合わせた高度な数式生成

VBA
スポンサーリンク

ここでは ユーザー入力に応じて数式を自動生成するフォーム と、複数条件を組み合わせた高度な数式生成 の例を紹介します。初心者でも「なるほど!」と思えるように、具体的なコード付きで解説します。


ユーザー入力に応じて数式を自動生成するフォーム

例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 を使うと簡単に値を受け取れる
  • 複数条件IfSelect Case で条件分岐
  • 数式生成"=A" & c.Row & "*2" のように文字列を組み立てる
  • 結果を入れる場所c.Offset(0,1) で隣の列に数式を入れる

練習課題

  1. ユーザーに「掛け算する列番号」を入力させ、その列を参照する数式を自動生成する
  2. 「セルの値が100以上なら掛け算、50~99なら足し算、49以下なら平均」といった複数条件を組み合わせた数式を作る
  3. 「文字列+数値」の両方を判定して、数式を切り替えるコードを書いてみる

こうした仕組みを使うと、ユーザーが入力した条件に応じて自動的に数式を作る「柔軟なフォーム」や、複雑な条件付き計算をVBAで自由に構築できます。

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