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

2023年12月17日

Excelには、様々なデータを扱うための機能があります。その中でも、Sumif関数やSUMIFS関数は、指定した条件に一致するデータを集計するための便利な機能です。Sumif関数は、一つの条件に一致するデータを集計するために使用されます。例えば、ある地域の売上データから、特定の商品の売上高を集計することができます。
一方で、Sumifs関数は複数の条件に一致するデータを集計するために使用されます。例えば、ある地域の売上データから、特定の商品かつ特定の期間の売上高を集計することができます。
これらの関数を使うことで、手動でデータを集計する必要がなくなり、時間を節約することができます。また、間違いやミスを減らすことができるため、正確なデータを得ることができます。

SumifとSUMIFS関数の使用方法

SumIf は単一の条件に基づいて合計を計算し、SumIfs は複数の条件を指定して合計を計算します。どちらを使用するかは、条件の数と複雑さによります。

例えば、A列が商品の数量を表し、B列がその商品の価格を表しているとします。B列(価格)が100以上の商品の数量の合計を求める場合、下記SumIfメソッド を使用します。
 WorksheetFunction.SumIf(検索範囲,検索条件,合計範囲)
下記例では、B列(価格)が100以上の条件に合致するA列のセルの値(数量)が合計されます。

Sub ExampleSumIf()
  Dim total As Double
  total = Application.WorksheetFunction.SumIf(Range("B1:B10"), ">=100", Range("A1:A10"))
  MsgBox "合計数量: " & total
End Sub


単一条件に対して、複数の条件を指定して合計を計算する場合はSumIfsを使用します。
 WorksheetFunction.SumIfs(合計範囲,検索範囲1,検索条件1,検索範囲2,検索条件2,‥‥)
例えば 、A列が商品の数量、B列が商品の価格、C列が商品のカテゴリを表しているとします。B列(価格)が100以上 かつ C列(カテゴリ)が"A" の商品の数量の合計を求める場合の例は以下のようになります。

Sub ExampleSumIfs()
 Dim total As Double
 total = Application.WorksheetFunction.SumIfs(Range("A1:A10"), Range("B1:B10"), ">=100", Range("C1:C10"), "A")
 MsgBox "合計数量: " & total
End Sub

SumIfs は複数の条件を同時に満たすデータを処理するのに適しています。

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

では、Sumif関数とSUMIFS関数を使ったサンプルアプリを見てみましょう。
左側の「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

最後に

ExcelのSumIf関数とSUMIFS関数は、条件に一致するデータを簡単に集計するための重要なツールです。SumIf関数は単一の条件に基づいてデータを合計し、SumIfs関数は複数の条件を指定してデータを集計します。これらの関数を利用することで、手動でのデータ処理が不要になり、時間を節約できます。また、正確なデータを得ることができ、ミスやエラーを減らすことができます。
記事内では、それぞれの関数の使用方法やサンプルコードを通じて、具体的な例を解説しました。例えば、商品の数量や価格、カテゴリに基づいて合計を計算する場合にどの関数を使うか、またサンプルアプリを通じて実際の業務シナリオに応用する方法を紹介しました。
これらの機能を利用することで、Excelのデータ処理がより効率的になり、ビジネス上の意思決定に役立つデータを素早く取得できます。Excelを効果的に活用し、データ処理のスキルを向上させることで、業務の生産性向上に寄与することが期待できます。