Articles

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

この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

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


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



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



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


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




この記事をdel.icio.usに登録する この記事をはてなブックマークに登録する この記事をGoogleブックマークに登録する この記事をYahoo!ブックマークに登録する この記事をdiggに登録する この記事をlivedoor clipに登録する この記事をNewsGattor Onlineに登録する

トラックバック一覧

コメント一覧

承認待ちコメント

このコメントは管理者の承認待ちです

  • 2012/10/09
  • - ◆
  • [ ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

はじめまして
相模原市の清家と申します。よろしくお願いします。
2013年の勤務カレンダーを作成しておりましたところ、検索で目にとまりました。例示と同じエクセル表を色を付けた休日セルをカウントしたいのですが、初心者です。具体的に関数計算はどのように入力すればいいのでしょうか?教えていただけませんでしょうか?

  • 2013/01/20
  • 清家 秀章 ◆ -
  • [ URL ]
  • [ 編集 ]
Re: Re: 色付きセルの件数をカウントする [CountColor]

> はじめまして
> 相模原市の清家と申します。よろしくお願いします。
> 2013年の勤務カレンダーを作成しておりましたところ、検索で目にとまりました。例示と同じエクセル表を色を付けた休日セルをカウントしたいのですが、初心者です。具体的に関数計算はどのように入力すればいいのでしょうか?教えていただけませんでしょうか?

実際のセルに入力する式は
=CountColor(B3:H8,K3)
になります。
ただ元々Excelにある関数では無いので、VBAを設定してください。
設定方法はこちらの記事参考。
http://excel-magic.com/blog-entry-21.html

  • 2013/01/24
  • isakat ◆ -
  • [ URL ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

はじめまして。
会社の2013年度カレンダー作成しておりました。
セルの色の集計したかったので大変助かります。

ただ、自分のやり方がまずいのか、、、
セルの色を変更してもすぐに計算式に反映されないのです。
計算式のセルをダブルクリックすると再計算されます。
ちなみにExcelは2010です。
ご教授願います。

  • 2013/02/11
  • 橋本 ◆ -
  • [ URL ]
  • [ 編集 ]
承認待ちコメント

このコメントは管理者の承認待ちです

  • 2013/05/28
  • - ◆
  • [ ]
  • [ 編集 ]
承認待ちコメント

このコメントは管理者の承認待ちです

  • 2013/08/24
  • - ◆
  • [ ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

すみません、初心者です。
上記のプログラムをそのまま写したのですが、「VALUE」エラーが出てしまいます。
SUMCOLORは問題なかったのですが・・・。
お手数ですが、何か良い方法はないかご教示ください。

  • 2013/10/24
  • nozawa ◆ -
  • [ URL ]
  • [ 編集 ]
>nozawaさん

当方の環境ではそのまま貼り付けても問題なく出ました。
Excel2007です。

そちらバージョンは何をお使いですか?

  • 2013/10/28
  • Isakat ◆ -
  • [ URL ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

この関数でとても助かりました。出勤日数の管理が簡単になりました。ありがとうございました。
色の数を増やした場合にF9とかで簡単に更新したいです。
教えてください。よろしくお願いします。

  • 2014/01/29
  • 悩み相談 ◆ -
  • [ URL ]
  • [ 編集 ]
>悩み相談さん

確かにF9で再計算されないのは不便ですね。
記事に追記しましたのでそちらで対応お願いします。

  • 2014/01/30
  • 管理人(isakat) ◆ -
  • [ URL ]
  • [ 編集 ]
承認待ちコメント

このコメントは管理者の承認待ちです

  • 2014/03/16
  • - ◆
  • [ ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

条件付きで変更したセルカラーには 反応しないようです。
解決策はありませんか?

50を超えたセルは赤色に
70を超えたセルは水色に表示する設定を行いました。
赤色の水色 各々のセル数をカウントしたかったのですが、
すべて無色(デフォルト)として認識するようです。。

  • 2014/04/09
  • こっこ ◆ -
  • [ URL ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

この関数使いました。とても便利ですね。
さらに、この色かつこの内容もカウントできるとなおいいですね。
(赤色の50とか緑色の70とか)
あと、他に書かれているかもいましたが、条件付で変更したカラーもカウントできるといいですね。
自分で作れれば良いのですが・・・・

  • 2014/04/29
  • 便利ですね ◆ -
  • [ URL ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [CountColor]

結合されているセルを1として数えることはできないでしょうか?
お願いします。

  • 2014/05/14
  • お願いします。 ◆ -
  • [ URL ]
  • [ 編集 ]
Re: 色付きセルの件数をカウントする [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

仕事の効率化を考えてサイトを探し、こちらのブログに立ち寄らせていただきました。
初心者すぎて《関数を自分で作ってみる》の記事もいまいち理解できませんでした…すみません(・・;)

  • 2014/08/29
  • 初心者でございます。質問です。 ◆ -
  • [ URL ]
  • [ 編集 ]
>初心者でございます さん

はい、それをそっくりそのままモジュールに追加すれば使えます。

CountColor = 0 For y = 1 To 計算範囲.Columns.Count

ここは、Forの前で改行してくださいね。

CountColor = 0
For y = 1 To 計算範囲.Columns.Count

  • 2014/08/29
  • 管理人(isakat) ◆ -
  • [ URL ]
  • [ 編集 ]
コメント投稿フォーム
Name
Subject
Mail
URL
Comment

Password
Secret
管理者にだけ表示を許可する

Navigations, etc.

Navigations

ブログ記事を検索

SPONSORS

人気記事ランキング

ブログパーツ

メールフォーム

名前:
メール:
件名:
本文:

Tweet

最新記事