'■WorksheetFunctionを使う場合
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row '最終行までループ
With Cells(i, "E")
'合計値を算出
.Value = WorksheetFunction.SumIf(Range("A:A"), .Offset(0, -1), Range("B:B"))
End With
Next
'■数式を埋め込む場合
a = Cells(Rows.Count, "D").End(xlUp).Row '最終行を取得
Range("E2:E" & a) = "=SUMIF(A:A,D2,B:B)" '数式を埋め込む
Range("E2:E" & a).Value = Range("E2:E" & a).Value '値に変換
Sub TEST1()
With Cells(2, "E")
'合計値を算出
.Value = WorksheetFunction.SumIf(Range("A:A"), .Offset(0, -1), Range("B:B"))
End With
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「"A"」に一致するセルの合計
「"A"」に一致するセルの合計を計算できました。
次は、「For」と「変数」を使って繰り返してみます。
Forと変数を使って繰り返す
Forと変数を使って繰り返し「SumIf関数」を使ってみます。
Sub TEST2()
'ループする
For i = 2 To 4
With Cells(i, "E")
'合計値を算出
.Value = WorksheetFunction.SumIf(Range("A:A"), .Offset(0, -1), Range("B:B"))
End With
Next
End Sub
今回は、「A、B、C」の3つの合計値を取得したいので、「For i = 2 to 4」で2~4行目をループしています。
「SumIf関数」の「引数」は先ほどと同じです。
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
ループして合計値を算出
ループして合計値を算出できました。
最終行までの条件一致したセルの合計値を算出
実務では、最終行がわからないことが多いので、最終行を取得して、SumIf関数をループしてみます。
Sub TEST3()
'最終行までループする
For i = 2 To Cells(Rows.Count, "D").End(xlUp).Row
With Cells(i, "E")
'合計値を算出
.Value = WorksheetFunction.SumIf(Range("A:A"), .Offset(0, -1), Range("B:B"))
End With
Next
End Sub
表を用意しておきます。
表を用意
最終行は、次のように取得することができます。
最終行を取得
「End」を使って最終行を取得することができます。
'最終行を取得
a = Cells(Rows.Count, "D").End(xlUp).Row
最終行を取得するイメージは、こんな感じです。
この場合は、最終行の「4」行目を取得できます。
では、VBAコードを実行した結果です。
ループして合計値を算出
先ほどと同じように、ループして合計値を算出できました。
数式を埋め込んでSumIf関数を使う
もう一つの方法は、「数式を埋め込んで」でSumIf関数を使う、という方法です。
条件一致したセルの合計値を算出
まずは、1つ目の合計値を、数式を埋め込んで取得してみます。
Sub TEST4()
'合計値を算出
Range("E2") = "=SUMIF(A:A,D2,B:B)" '数式を埋め込む
Range("E2").Value = Range("E2").Value '値に変換
End Sub
数式を値に変換したいので、セルをセルに代入をしています。
数式のままでいい場合は、「値に変換する」VBAコードは、省きます。
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
「"A"」に一致するセルの合計
「"A"」に一致するセルの合計を取得できました。
数式を一括で埋め込む
同じ数式を複数のセルに、「一括で埋め込む」と合計値を取得することができます。
入力する先の「Range」の範囲を「Range("E2:E4")」のように変更します。
Sub TEST5()
'数式を一括で埋め込む
Range("E2:E4") = "=SUMIF(A:A,D2,B:B)"
Range("E2:E4").Value = Range("E2:E4").Value '値に変換
End Sub
表を用意しておきます。
表を用意
では、VBAコードを実行してみます。
数式を「一括で埋め込んで」合計値を算出
数式を「一括で埋め込んで」合計値を算出できました。
数式を埋め込む方が、VBAコードがシンプルになります。
最終行までの条件一致したセルの合計値を算出
数式の埋め込みの場合でも、最終行を取得して、条件に一致したセルの合計値を算出してみます。
Sub TEST6()
'最終行を取得
a = Cells(Rows.Count, "D").End(xlUp).Row
'数式を一括で埋め込む
Range("E2:E" & a) = "=SUMIF(A:A,D2,B:B)"
Range("E2:E" & a).Value = Range("E2:E" & a).Value '値に変換
End Sub