Excelでデータを管理する際、色付きセルの合計を計算したい ことがあります。しかし、SUMIF関数ではセルの色を条件にして合計することはできません。そのため、「SUMIFを使った代替方法」や「VBAを活用したカスタム関数」 を使うことで、色付きセルの合計を求めることができます。
本記事では、SUMIF関数を使う方法、フィルター機能を活用する方法、VBAを使ったカスタム関数(UDF)で色付きセルの合計を求める方法 について解説します。
目次
ExcelのSUMIF関数で色付きセルを合計できるか?
✅ 結論: SUMIF関数ではセルの色を条件にして合計することはできません。
SUMIFはセルの「数値や文字列」を条件に合計を求める関数であり、セルの色 には対応していません。
SUMIF関数を使った色付きセルの合計を出す代替方法
SUMIF関数を使いたい場合は、色付きセルに特定の値(例えば「1」)を入力し、その値を条件にSUMIFを使う方法 があります。
✅ 手順
- 色付きセルの隣に「フラグ列」を作成
- 例えば、
B2:B10に数値があり、色付きセルを合計したい場合、C2:C10に「1」を入力。
- 例えば、
- SUMIF関数を使用
C2:C10→ フラグ列1→ 色付きセルを表す値B2:B10→ 合計対象の範囲
✅ 結果:
色付きセルの数値だけが合計されます。
📌 ポイント
手動で色付きセルに「1」を入力する必要がありますが、SUMIF関数を活用できるメリットがあります。
フィルター機能を使って色付きセルの合計を求める(VBAなし)
VBAを使わずに色付きセルの合計を求めたい場合は、「フィルター機能」を活用すると簡単に計算できます。
✅ 手順
- データ範囲を選択(例:
A1:B100) - 「データ」タブ →「フィルター」
- フィルターのドロップダウンをクリック
- 「フィルターオプション」から「フィルターの色」を選択
- 特定の色を選ぶ
- フィルターで表示されたセルの合計を確認
- Excelの「合計」セル(SUM関数) を使うと、フィルターされたデータの合計が計算される
✅ 結果:
選択した色付きセルの数値のみが合計されます。
VBAを使って色付きセルの合計を求めるカスタム関数(UDF)
SUMIF関数では色を判定できないため、VBAを使って「特定の色のセルだけを合計する関数」 を作成します。
✅ 色付きセルの合計を求めるVBA関数
Function SumColorCells(rng As Range, colorCell As Range) As Double
Dim cell As Range
Dim total As Double
total = 0
' 範囲内のセルをループ
For Each cell In rng
If cell.Interior.Color = colorCell.Interior.Color Then
total = total + cell.Value
End If
Next cell
SumColorCells = total
End Function
✅ VBAの設定と実行方法
- VBAエディタを開く
Alt + F11を押して VBAエディタ を開く
- 「挿入」→「モジュール」を選択
- 上記のVBAコードを貼り付け
- Excelに戻る
- 以下の数式を入力
A2:A10→ 色付きセルの合計を求める範囲C1→ 合計したい色を持つセル(基準の色)
- Enterキーを押すと結果が表示される
✅ 結果:
C1セルと同じ色のセルの数値が合計されます。
色付きセルの合計を求める方法の比較
| 方法 | メリット | デメリット |
|---|---|---|
| SUMIF関数 + フラグ列 | SUMIFを活用できる | 色付きセルを手動で「1」と入力する必要がある |
| フィルターを使う(VBAなし) | 直感的で簡単 | 手動操作が必要 |
| VBAのカスタム関数(UDF) | 自動で色別に合計できる | VBAの知識が必要 |
色付きセルの合計を求める際の注意点
✅ 条件付き書式で色付けされたセルはVBAではカウントできない
VBAの Interior.Color は手動で設定したセルの色しか取得できません。
条件付き書式で色付けされたセルの合計を求める場合、SUMIF関数を使うのが最適 です。
✅ VBA関数は自動更新されない
F9を押して再計算する必要がある
✅ フィルター機能を使う場合はデータが変わると手動更新が必要
- データが追加・削除されたらフィルターを再適用する
まとめ
Excelで色付きセルの合計を求める方法 には、3つの選択肢 があります。
📌 おすすめの使い分け
✔ VBAを使わずに計算したい → フィルター機能を使う
✔ SUMIFを活用したい → フラグ列を作成する方法を使う
✔ 色別に自動で合計を求めたい → VBAのカスタム関数を使う
実際の活用例
| 方法 | 使いどころ |
|---|---|
| SUMIF関数 + フラグ列 | 数値を手動で「1」と入力できる場合 |
| フィルター機能 | VBAを使いたくない場合 |
| VBAのカスタム関数 | 色別に自動で合計を出したい場合 |