当サイトはアフィリエイト広告を利用しています。
今回は、Excelで色付きセルや色の付いていないセルをカウント・合計する方法をご紹介します。
この記事を読めば、以下のようなことが実現可能です。
- 色付きセル(色指定なし)の個数をカウントする
- 色付きセル(色指定なし)の数値を合計する
- 色付きセルの個数を色別にカウントする
- 色付きセルの数値を色別に合計する
- 色の付いていないセルの個数をカウントする
- 色の付いていないセルの数値を合計する
Excelで色付きセルや色の付いていないセルをカウント・合計する方法
Excelで色付きセルや色の付いていないセルをカウント・合計する方法には、以下のようなものがあります。
- 色フィルターを使う
- ユーザー定義関数を使う
方法1:色フィルターを使う
集計範囲が表になっている場合、色フィルターを使うことで色付きセルや色の付いていないセルをカウント・合計できます。詳しくはこちらをご覧ください。
方法2:ユーザー定義関数を使う
Excelには色を基準として集計する関数がありません。そのため、色フィルターが使えない場合や、色フィルターを使いたくない場合は、色付きセルや色の付いていないセルをカウント・合計できる関数を自分で作成する必要があります。
そこで今回、色付きセルをカウント・合計できる「CountColor関数」と、色の付いていないセルをカウント・合計できる「CountNoColor関数」という、2つのユーザー定義関数を作成してみました。これらの関数の使い方については、こちらで解説しています。
色フィルターを使って色付きセルや色の付いていないセルをカウント・合計する方法
色フィルターを使って色付きセルや色の付いていないセルをカウント・合計するには、まず見出し含む集計範囲を選択して[Ctrl]+[T]を押し、「テーブルの作成」が表示されたら、そのまま「OK」をクリックします。
すると選択範囲がテーブルに変換されて「テーブルデザイン」タブが開くので、このタブの「集計行」にチェックを付けます。
すると、表の一番下に集計行が追加されます。
以降の手順は、何を集計するかによって異なります。詳しくは続きをご覧ください。
色付きセルを色別にカウント・合計する方法
色付きセルを色別にカウント・合計するには、集計したい列の見出しの「▼」⇒「色フィルター」⇒集計したい色を選択します。
集計したい列の集計セルをクリックし、セルの個数を数えたい場合は「個数」を、セルの数値を合計したい場合は「合計」を選択します。これで、指定した色のセルをカウント・合計できます。
色の付いていないセルをカウント・合計する方法
色の付いていないセルをカウント・合計するには、集計したい列の見出しの「▼」⇒「色フィルター」⇒「塗りつぶしなし」を選択します。
集計したい列の集計セルをクリックし、セルの個数を数えたい場合は「個数」を、セルの数値を合計したい場合は「合計」を選択します。これで、色の付いていないセルをカウント・合計できます。
なお、色フィルターはテーブルを選択した状態で「データ」タブ⇒「クリア」をクリックするか、[Alt]⇒[A]⇒[C]の順に押すことで解除できます。
ユーザー定義関数を使って色付きセルや色の付いていないセルをカウント・合計する方法
ユーザー定義関数「CountColor関数」「CountNoColor関数」を使って色付きセルや色の付いていないセルをカウント・合計するには、まずVBEを起動し、標準モジュールに以下のコードを貼り付けます。
Function CountColor(arg1 As Range, arg2 As Long, arg3 As Range)
Dim buf As Range
Application.Volatile
CountColor = 0
Select Case arg2
Case 1 'セルの個数をカウントする場合
For Each buf In arg1
If buf.Interior.Color = arg3.Interior.Color Then
CountColor = CountColor + 1
End If
Next buf
Case 2 'セルの数値を合計する場合
For Each buf In arg1
If buf.Interior.Color = arg3.Interior.Color Then
CountColor = CountColor + buf.Value
End If
Next buf
End Select
End Function
Function CountNoColor(arg1 As Range, arg2 As Long)
Dim buf As Range
Application.Volatile
CountNoColor = 0
Select Case arg2
Case 1 'セルの個数をカウントする場合
For Each buf In arg1
If buf.Interior.ColorIndex = xlNone Then
CountNoColor = CountNoColor + 1
End If
Next buf
Case 2 'セルの数値を合計する場合
For Each buf In arg1
If buf.Interior.ColorIndex = xlNone Then
CountNoColor = CountNoColor + buf.Value
End If
Next buf
End Select
End Function
VBEの起動方法や、標準モジュールの挿入方法がわからない方は、以下の記事を参考にしてみてください。
以降の手順は、何を集計するかによって異なります。詳しくは続きをご覧ください。
色付きセルを色別にカウント・合計する方法
色付きセルを色別にカウント・合計するには、「CountColor関数」を使います。
CountColor関数は、CountColor(集計範囲,集計方法,集計する色)
という構文になっており、セルの個数をカウントする場合は集計方法で「1」を、セルの数値を合計する場合は集計方法で「2」を指定します。
(例)A1:B5のうち、D2の色で塗りつぶされたセルの個数を数えてE2に結果を表示する。
E2に=CountColor(A1:B5,1,D2)
と入力します。
(例)A1:B5のうち、D3の色で塗りつぶされたセルの数値を合計してF3に結果を表示する。
F3に=CountColor(A1:B5,2,D3)
と入力します。
色の付いていないセルをカウント・合計する方法
色の付いていないセルをカウント・合計するには、「CountNoColor関数」を使います。
CountNoColor関数は、CountNoColor(集計範囲,集計方法)
という構文になっており、集計方法はCountColor関数と同じく、「1」か「2」で指定します。
(例)A1:B5のうち、色の付いていないセルの個数を数えてE4に結果を表示する。
E4に=CountNoColor(A1:B5,1)
と入力します。
(例)A1:B5のうち、色の付いていないセルの数値を合計してF4に結果を表示する。
F4に=CountNoColor(A1:B5,2)
と入力します。
色付きセル(色指定なし)をカウント・合計する方法
何色であれ色が付いているセルをカウント・合計するには、「CountNoColor関数」のほか、「COUNT関数」や「SUM関数」も使います。
COUNT関数(カウント関数)は、数値が入っているセルの個数を求める関数です。
COUNT(値1, [値2], …)
- 値1(必須)
- 検索する範囲を指定する。
- 値2(省略可)
- 検索する追加の範囲を指定する。
なお、「値」は最大255個まで指定できます。
SUM関数(サム関数)は、数値の合計を求める関数です。
SUM(数値1, [数値2], …)
- 数値1(必須)
- 合計したい数値を指定する。
- 数値2(省略可)
- 合計したい追加の数値を指定する。
なお、「数値」は最大255個まで指定できます。
(例)A1:B5のうち、色付きセルの個数を数えてE5に結果を表示する。
E5に=COUNT(A1:B5)-CountNoColor(A1:B5,1)
と入力します。
(例)A1:B5のうち、色付きセルの数値を合計してF5に結果を表示する。
F5に=SUM(A1:B5)-CountNoColor(A1:B5,2)
と入力します。
背景色の変更がユーザー定義関数の集計結果に反映されないときの対処法
ユーザー定義関数を使う場合、集計範囲の背景色を変更しても、即座に集計結果には反映されません。
集計結果に反映させるには、背景色を変更するたびに、再計算するショートカットキーの[F9]を押す必要があります。
ユーザー定義関数を使ったファイルを開き直すと「セキュリティリスク」が表示されるときの対処法
ユーザー定義関数を使ったファイルを開き直すと、「セキュリティリスク」が表示され、関数が機能しない場合があります。
この場合は、ファイルをいったん閉じてからファイルを右クリック⇒「プロパティ」をクリック⇒「プロパティ」が表示されたら「セキュリティ」項目の「許可する」にチェックを付けて「OK」をクリックします。これで関数が使えるようになります。
まとめ
今回は、Excelで色付きセルや色の付いていないセルをカウント・合計する方法をご紹介しました。
集計範囲が表になっている場合は、色フィルターを使う方法が簡単です。色フィルターが使えない場合や、色フィルターを使いたくない場合は、今回ご紹介したユーザー定義関数の「CountColor関数」や「CountNoColor関数」を活用してみてくださいね。
ご紹介したマクロで希望の動作にならない場合、マクロの作成を依頼できるサービスを利用するのがおすすめです。以下の記事でマクロの作成を依頼できるサービスをご紹介していますので、興味のある方はぜひあわせてご覧ください。
ガントチャートを作成する目的で色付きセルをカウントしたいと思っている場合は、以下の記事も参考になるかもしれません。こちらは実績をセルの塗りつぶしではなく矢印で表す方法になります。