Sumif、SumIfs関数を使って条件に一致するデータを集計する

2020年5月6日

エクセルのSumif、SUMIFS関数は、指定した条件に一致するデータを集計する関数です。
Sumif は一つだけの条件で集計しますが、SUMIFS を使うと複数条件で集計が行えます。
次のサンプルアプリでSumif、SUMIFSメソッドの利用方法について説明します。

SumIfメソッドを使ったサンプルアプリの説明

左側の「SumIf」ボタンをクリックすると、埼玉県に勤務している社員の通勤手当支給額の合計を集計してダイアログボックスで集計結果を表示します。

SumIfメソッドを使ったサンプルアプリのソースコード
コードの作成手順はこちら

Sub ボタン1_Click()

   'ワークシートを指定する
    Dim Sh1 As Worksheet
    Set Sh1 = ThisWorkbook.Worksheets("Sheet1")
    
   '変数を定義する
    Dim workEndR1, Gokei As Long
    
   'データの最終行を取得する
    workEndR1 = Sh1.Cells(Rows.Count, 2).End(xlUp).Row
    
   '集計範囲(通勤手当列)を指定する
    Dim Rng As Range
    Set Rng = Range(Sh1.Cells(6, 7), Sh1.Cells(workEndR1, 7))
    
   '勤務地の範囲(F列)を指定する
    Dim Rng1 As Range
    Set Rng1 = Range(Sh1.Cells(6, 6), Sh1.Cells(workEndR1, 6))
   
   '埼玉県に勤務している社員の通勤手当支給額の合計
    Gokei = WorksheetFunction.SumIf(Rng1, "埼玉県", Rng)
 
    'ダイアログを表示して合計額を表示
    MsgBox "埼玉県に勤務している社員の通勤手当支給額の合計:" & Format(Gokei, "#,###") & "円"

End Sub

SumIfsメソッドを使ったサンプルアプリの説明

右側の「SumIfs」ボタンをクリックすると、役職が課長職で埼玉県に勤務している社員の通勤手当支給額の合計を集計してダイアログボックスで集計結果を表示します。

SumIfsメソッドを使ったサンプルアプリのソースコード
コードの作成手順は

Sub ボタン2_Click()

   'ワークシートを指定する
    Dim Sh1 As Worksheet
    Set Sh1 = ThisWorkbook.Worksheets("Sheet1")
    
   '変数を定義する
    Dim workEndR1, Gokei As Long
    
   'データの最終行を取得する
    workEndR1 = Sh1.Cells(Rows.Count, 2).End(xlUp).Row
    
   '集計範囲(通勤手当列)を指定する
    Dim Rng As Range
    Set Rng = Range(Sh1.Cells(6, 7), Sh1.Cells(workEndR1, 7))
    
   '役職列の範囲(D列)を指定する
    Dim Rng1 As Range
    Set Rng1 = Range(Sh1.Cells(6, 4), Sh1.Cells(workEndR1, 4))
   
   '勤務地の範囲(F列)を指定する
    Dim Rng2 As Range
    Set Rng2 = Range(Sh1.Cells(6, 6), Sh1.Cells(workEndR1, 6))
    
   '役職が課長職で埼玉県に勤務している社員の通勤手当支給額の合計
    Gokei = WorksheetFunction.SumIfs(Rng, Rng1, "課長", Rng2, "埼玉県") 
 
    'ダイアログを表示して合計額を表示
    MsgBox "課長職で埼玉県に勤務している社員の通勤手当支給額の合計:" & Format(Gokei, "#,###") & "円"

End Sub

Sumif、SUMIFSメソッドの説明

SumIfメソッドの1番目の引数は「検索範囲」、2番目の引数は「検索条件」、3番目の引数は「合計範囲」です。

  WorksheetFunction.SumIf(検索範囲,検索条件,合計範囲)

SumIfsメソッドの1番目の引数は「合計範囲」、2番目の引数は「検索範囲1」、3番目の引数は「検索条件1」です。以降「検索範囲2」、「検索条件2」 ・・・・・・ と続きます。

 WorksheetFunction.SumIfs(合計範囲,検索範囲1,検索条件1,検索範囲2,検索条件2,‥‥)