前回記事 [ 色付きセルのみを合計する ]
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のアドインファイルを掲載しております。