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

2023年4月15日

Excelには、様々なデータを扱うための機能があります。その中でも、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,‥‥)

【SumIfメソッドの例】
社員データの表に対して「埼玉県」の列を検索範囲に指定し、「埼玉県」に該当する社員の「通勤手当」の列を合計範囲に指定します。そして、条件として「埼玉県」という検索条件を指定します。これによって、埼玉県に勤務している社員の通勤手当支給額の合計を求めることができます。

【SumIfsメソッドの例】
社員データの表に対して「埼玉県」の列を検索範囲1に指定し、「課長職」の列を検索範囲2に指定し、「埼玉県」かつ「課長職」に該当する社員の「通勤手当」の列を合計範囲に指定します。そして、条件として「埼玉県」という検索条件1と、「課長職」という検索条件2を指定します。これによって、埼玉県に勤務し、かつ課長職の社員の通勤手当支給額の合計を求めることができます。