大体でIT

-ちょっと使えるネタを紹介-

大体でIT

Excel VBAで、SumIf関数を繰り返し使う方法について、ご紹介します。「Forで繰り返す」か「数式を埋め込む」方法があります。取得した値をVBAの中で使う場合は、「Forで繰り返す」方が便利です。セルにそのまま入力したいのであれば、「数式を埋め込む方法」が簡単です。

はじめに

この記事では、VBAでSumIf関数を繰り返し使う方法について、ご紹介します。

やり方は、2つあります。

  • WorksheetFunctionを使ってForで繰り返す
  • 数式を一括で埋め込む

という方法です。

取得した合計値をVBAの中で使う場合は、「WorksheetFunctionをForで繰り返す」方法が使えます。

そのままセルに入力したいのであれば、「数式を一括で埋め込む」方法が簡単です。

では、VBAでSumIf関数を繰り返し使う方法について、解説していきます。

この記事で紹介すること

  • VBAでSumIf関数を繰り返し使う方法

目次から見たい項目へ移動すると便利ですよ。

目次

VBAコードまとめ

SumIf関数を繰り返し使う方法について、VBAコードをまとめています。

VBAコードだけを確認したい場合に、ご活用ください。

'■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 '値に変換

では、解説していきます。

WorksheetFunctionでSumIf関数を繰り返し使う

1つ目の方法は、WorksheetFunctionを使ってSumIf関数を、「For」で繰り返すという方法です。

条件一致したセルの合計値を算出

まずは、1つの合計値を算出するところから、VBAコードをみてみます。

VBAコードは、次のようになります。

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

最終行を取得するイメージは、こんな感じです。

Endで最終行を取得

この場合は、最終行の「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

表を用意しておきます。

表を用意

表を用意

最終行を取得するイメージは、先ほどと同じで次のようになります。

最終行を取得

Endで最終行を取得できます。

'最終行を取得
a = Cells(Rows.Count, "D").End(xlUp).Row

イメージは、こんな感じです。

Endで最終行を取得

これで、Endを使って最終行を取得できます。

では、VBAコードの実行結果をみてみます。

数式を「一括入力」して合計値を算出

数式を「一括入力」して合計値を算出

数式を「一括入力」して合計値を算出できました。

最終行までの合計値を算出する場合も、「数式の埋め込み」だとVBAコードがシンプルになります。

おわりに

この記事では、VBAでSumIf関数を繰り返し使う方法について、ご紹介しました。

やり方は、2つあります。

  • WorksheetFunctionを使ってForで繰り返す
  • 数式を一括で埋め込む

という方法です。

取得した合計値をVBAの中で使う場合は、「WorksheetFunctionをForで繰り返す」方法が使えます。

そのままセルに入力したいのであれば、「数式を一括で埋め込む」方法が簡単です。

参考になればと思います。最後までご覧くださいまして、ありがとうございました。

関連する記事から探す

カテゴリから探す

カテゴリから見たい項目を探すと便利ですよ。

アーカイブから探す