Excel。塗りつぶしたセルの数を数えるにはどうしたらいいの?
<名前の定義+Excelマクロ4.0関数>
次のような表があります。色分けしたチームの人数を知りたいわけですね。
Excelでは、直接塗りつぶされたセルを数えることはできませんし、まして、赤色・青色など色ごとに数えることはできません。
当然関数もない。
そこで、通常なら、数値や記号など数えることができるものを入力して対応する方法を思い浮かべるわけですが、ある方法を知っていると、実はセルの塗りつぶしを数えることができるのです。
【名前の定義+Excelマクロ4.0関数】
C2をクリックします。数式タブの名前の定義をクリックして、名前の定義ダイアログボックスを表示します。名前には、今回「red」という名前を設定します。
範囲がブックになっていることを確認します。
参照範囲には、
=GET.CELL(63,!$B2)+NOW()*0
と入力します。
入力後、確認すると、セルの前にシート名が自動的に入力されますので、自分自身で入力しなくても大丈夫です。
=GET.CELL(63,チーム色分け!$B2)+NOW()*0
説明は後回しにして、作業を続けます。
OKボタンをクリックすると、名前の定義が完成します。
C2に
「=red」と入力して、オートフィルを使って数式をコピーします。
33・3・50というなんだかわからない数値が算出されてきました。
ここで、先程の数式を説明していきます。
=GET.CELL(63,チーム色分け!$B2)+NOW()*0
GET.CELL関数というのがあります。
この関数は、Excelマクロ4.0関数の一つで、セルの書式や位置や内容などの情報を算出することができます。
また、GET.CELL関数の書式は、
GET.CELL(検査の種類,範囲)
となっています。
今回は、検査の種類は、「63」をつかっています。
63は、セルの塗りつぶしの「色」を値として算出してくれます。
範囲は、B2。
オートフィルを使って数式をコピーしますので、複合参照で設定しますので、$B2と入力します。
この数式の後ろ側に、
+NOW()*0
を加筆します。
この+NOW()*0は、データを変更しても再計算するためで、GET.CELL関数では「常套句」のようなものです。
今回算出された、33・3・50というのは、塗りつぶしの色の番号が算出されたわけです。
ここまで算出されれば、あとは、COUNTIF関数を使えば簡単に塗りつぶしされた色ごとの数を算出することができます。
F2の数式は、
=COUNTIF($C$2:$C$8,"=33")
となっています。
今回は、塗りつぶしの色を数えることができましたが、検査の種類を変更することで、通常のExcelでは求めることができないものも算出することができます。
A列をみると、斜体の文字があります。
斜体の文字が何件あるのかを知りたい場合には、名前の定義ダイアログボックスで、
=GET.CELL(21,チーム色分け!$A2)+NOW()*0
と設定すれば数えることができます。
検索の種類は、「21」で、斜体かどうか判断してくれます。
斜体だと、TRUEを返しますので、1と表示されます。
あとは、数えるなり、合計すれば、斜体の件数がわかります。
もし機会があれば、使ってみてはどうでしょうか?
最後に注意点として、Excelマクロ4.0を使っていますので、マクロ有効ブックで保存する必要があります。