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
その他の例
流れ:
- 処理を行うワークシートを指定する。
- 処理を行うセルの範囲を指定する。
- 指定された範囲内の各セルをループで処理する。
- 処理するセルが対象の列に属するかどうかを判定する。
- 対象の列に属するセルに関数を入力する。
以下は、列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
コメント