エクセル術

色付きセルの件数をカウントする [CountColor]

35-1.png



前回記事 [ 色付きセルのみを合計する
SUMIFのように動かしたSumColorですが、今度はCOUNTIF版を作ってみます。
もともとこの定義関数を作るきっかけになったのは、次年度の勤務表を作成する為に休日日数をカウントしたい。というのが目的でした。
私の会社では年間休日日数というのが決まっています。その日数を大型連休につぎ込むのか、3連休を作るのか・・・・思案するのですが、カレンダーで色の付けた日=休日なのでその休日日数を関数で合計できれば、年間カレンダーの作成が楽になるのです。

前回の問題点

前回の問題点として、縦1列しか合計できませんでした。
カレンダーのような2次元テーブルに対応できなかったのが重大な問題でした。
そこで前回のコードではRowsしか使っていなかったんですが、Columnsと組み合わせる事で対応してみます。
Rowは縦、Columnは横の意味です。
A1:C10の範囲指定の中で、Rows(3).Columns(2) となればB3セルのことを示します。

CountColor

関数名
CountColor( 計算範囲 , 条件色セル )
機能
計算範囲の中で条件色セルと同じ色のセルをカウントする
範囲指定は複数行、複数列可能

Function CountColor(計算範囲, 条件色セル)
 Application.Volatile
 CountColor = 0
 For y = 1 To 計算範囲.Columns.Count
 For x = 1 To 計算範囲.Rows.Count
 If 計算範囲.Rows(x).Columns(y).Interior.ColorIndex = 条件色セル.Interior.ColorIndex Then
 CountColor = CountColor + 1
 End If
 Next
 Next
End Function

アレンジすればいろいろな事が出来そうですね。こんなのに使えた!という報告いただければ嬉しいです。

前回記事 [ 色付きセルのみを合計する [SumColor] ]
関連記事 [ 自分で関数を作ってみる

2014/1/30追記
F9の再計算に対応していない為、対応出来る様コードを追加

Application.Volatile
をFunctionプロシージャに入れる事でF9の再計算の対象となります。
通常の状態だとユーザー定義関数は再計算の非対象です。これはExcelの仕様だとMicrosoftは謳っています。

アドインダウンロード

ダウンロードページに当記事で紹介したCountColorのアドインファイルを掲載しております。

モバイルバージョンを終了