【VBAリファレンス|実務向け】[実務の効率化!SUMIF関数で条件付き集計をマスターしよう]

スポンサーリンク

1. 導入:なぜSUMIF関数が重要なのか

実務において「特定の条件に一致するデータだけを合計したい」という場面は非常に多いものです。例えば、売上データの中から「特定の担当者の売上合計」を出したり、在庫リストから「特定のカテゴリの在庫数」を算出したりするケースです。これを手作業でフィルタをかけて計算していると、ミスが発生しやすく、データ更新のたびにやり直しが必要になります。SUMIF関数をマスターすれば、データがどれだけ増えても数式ひとつで瞬時に正確な集計が可能になり、作業効率が飛躍的にアップします。

2. 基礎知識:SUMIF関数の仕組み

SUMIF関数は、指定した範囲内で検索条件に一致するセルを探し、それに対応する別の範囲の値を合計する関数です。基本の書き方は以下の通りです。

=SUMIF(検索範囲, 検索条件, 合計範囲)

・検索範囲:条件を判定するためのセル範囲です。
・検索条件:どのような条件で合計するか(文字列、数値、セル参照など)。
・合計範囲:実際に合計したい数値が入っている範囲です。

3. 実装/解決策:現場で使えるテクニック

現場で最も陥りやすいミスは、数式をコピーした際の「参照範囲のズレ」です。数式をコピーしても範囲が変わらないように、必ず絶対参照($記号)を使いましょう。また、VBAで同様の処理を行いたい場合は、WorksheetFunctionオブジェクトを使用することで、Excelの強力な関数をプログラム内に組み込むことができます。

4. サンプルプログラム:VBAでSUMIFを実行する

VBAでSUMIFを自動実行するコード例です。ボタンを押した時に、集計結果を特定のセルに出力するようなシーンを想定しています。

Sub CalculateSalesByItem()
Dim ws As Worksheet
Set ws = ThisWorkbook.Sheets(“売上データ”)

‘ 検索範囲:商品名(B列)、合計範囲:金額(C列)
‘ 検索条件:E列の2行目に記載された商品名
‘ WorksheetFunctionを使ってVBAからSUMIFを呼び出します

Dim searchRange As Range
Dim sumRange As Range
Dim criteria As String

Set searchRange = ws.Range(“B4:B68”)
Set sumRange = ws.Range(“C4:C68”)
criteria = ws.Range(“E2”).Value

‘ 結果をF2セルに出力
ws.Range(“F2”).Value = Application.WorksheetFunction.SumIf(searchRange, criteria, sumRange)

MsgBox “集計が完了しました。”
End Sub

5. 応用・注意点:現場で役立つ補足

・ワイルドカードの使用:検索条件に「(アスタリスク)」を使うと、「Aを含む商品」といったあいまい検索が可能です。例えば「バラ」と指定すれば、「赤バラ」「バラの花束」の両方が合計対象になります。
・複数条件の場合:条件が2つ以上ある場合は、SUMIF関数ではなくSUMIFS関数を使用してください。実務ではこちらの方が登場頻度が高いので、併せて覚えておくと重宝します。
・計算の遅延:対象データが数万行を超える場合、SUMIFを大量に配置するとシートが重くなることがあります。その場合は、一度「値の貼り付け」で数式を消すか、VBAで計算結果のみを書き出す運用に切り替えるのが、ベテランの判断です。

タイトルとURLをコピーしました