例文を使って繰り返し業務を時短

【マクロ・VBA】ワークシート関数・数式を入力する

エクセル、マクロ、VBAでワークシート関数・数式を入力する方法 VBA

EXCEL VBA(マクロ)のセルに数詞やワークシート関数を入力する方法をご紹介。VBAからワークシート関数を呼び出すにはApplicationオブジェクトのWorksheetFunctionプロパティを使用。数式をは「=」から記述し、数式全体を「”」で囲みます。

特定のセルに関数を入力する方法 

Sub 関数入力()

ActiveSheet.Cells(1, 1) = "=SUM(B1:B5)"

End Sub

特定の列の各セルにループで関数を入力する方法  

Sub 関数の入力_合計()
    Dim ws As Worksheet
    Dim i As Long

    '変数にアクティブシートをセット
    Set ws = ActiveSheet

    '項目名を入力
    ws.Range("A5").Value = "合計"

    'B5~D5にそれぞれの列の合計を入力
    For i = 2 To 4
        With ws
            .Cells(5, i).Value = WorksheetFunction.Sum(.Range(.Cells(2, i), .Cells(4, i)))
        End With
    Next i
    
    MsgBox "完了"
End Sub

その他の例 

流れ:

  1. 処理を行うワークシートを指定する。
  2. 処理を行うセルの範囲を指定する。
  3. 指定された範囲内の各セルをループで処理する。
  4. 処理するセルが対象の列に属するかどうかを判定する。
  5. 対象の列に属するセルに関数を入力する。

以下は、列CにSUM関数を入力する例です。

Sub InsertFunctionToColumnC()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim i As Long
    
    '処理を行うワークシートを指定
    Set ws = ThisWorkbook.Sheets("Sheet1")
    
    '処理を行うセルの範囲を指定
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    Set targetRange = ws.Range("C2:C" & lastRow)
    
    '指定された範囲内の各セルをループ処理
    For i = 1 To targetRange.Rows.Count
        '対象の列に属するセルに関数を入力
        If targetRange.Cells(i, 1).Column = 3 Then
            targetRange.Cells(i, 1).Formula = "=SUM(A" & i + 1 & ":B" & i + 1 & ")"
        End If
    Next i
MsgBox "完了"
End Sub

この例では、ws.Range("C2:C" & lastRow)を指定して、シート1のC2からC最終行までの範囲を処理するようにしています。次に、Forループを使用して、対象の列に属するセルに関数を入力しています。If文で、処理するセルが列Cに属するかどうかを判定し、列Cに属する場合は、Formulaプロパティを使用して、SUM関数をセルに入力します。

このように、列の位置を指定して関数を入力することで、複数のセルに同じ関数を一度に入力できます。

インデックス・マッチ関数の入力

Sub インデックス_マッチ関数の入力()

Range("C3").Formula = "=INDEX(F3:F8, MATCH(B3, E3:E8))"
    
MsgBox "完了"
End Sub

コメント

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