Excelで資料を作成していると、進捗管理でセルを塗りつぶしたり、重要な項目に色を付けたりすることがよくあります。しかし、いざ「色のついたセルがいくつあるか数えたい」と思ったとき、標準の関数では対応できず困ってしまうケースが少なくありません。そんな時に役立つのが「countcolor関数」です。
この関数はExcelに最初から備わっているものではなく、自分で作成して追加する「自作関数」です。一見難しそうに感じますが、手順さえわかれば誰でも簡単に導入でき、作業効率を劇的に向上させることが可能です。本記事では、countcolor関数の設定方法から使い方、うまく動かない時の対処法まで分かりやすく解説します。
countcolor関数とは?標準のExcelにはない自作機能の基本

Excelには「COUNTIF」や「COUNTA」など、データを数えるための便利な関数が豊富に用意されています。しかし、意外なことに「セルの色」を条件にしてカウントする関数は標準では存在しません。これはExcelが「セルの値(中身)」を計算の対象とするソフトであり、「セルの書式(見た目)」は計算の対象外として設計されているためです。
なぜ標準の関数では色が数えられないのか
Excelの計算エンジンは、セルに入力された数値や文字を読み取ることに特化しています。一方で、塗りつぶしの色やフォントのサイズといった「書式情報」は、あくまでデータを飾るための付加情報として扱われます。そのため、COUNTIF関数などで「赤い色のセルを数える」といった指定をしても、Excelはどのセルが赤いのかを判断するための計算式を持っていません。
このような「標準機能では手が届かない悩み」を解消するために作られたのが、countcolor関数というユーザー定義関数です。これはVBA(マクロ)というプログラミング言語を使って、Excelに新しい計算ルールを覚えさせることで実現します。一度設定してしまえば、通常の関数と同じ感覚で利用できるのが大きな特徴です。
countcolor関数(ユーザー定義関数)を使うメリット
countcolor関数を導入する最大のメリットは、集計の自動化です。手動で色付きセルを1つずつ数える必要がなくなり、入力ミスや数え間違いを防ぐことができます。特に数百、数千行におよぶ大規模なリストを管理している場合、色が変わるたびに自動で集計結果が更新される仕組みは、業務の時短に直結します。
また、視覚的な管理と計算をリンクさせることができます。「完了したタスクは青」「未完了は赤」と色分けしている場合、その色の数をそのまま集計データとして活用できるため、資料の直感的な分かりやすさを保ったまま、正確な数字を算出できるようになります。これにより、進捗レポートなどの作成が非常にスムーズになります。
使用前に知っておきたいVBA(マクロ)の基礎知識
countcolor関数を利用するには、VBA(Visual Basic for Applications)という機能を使います。これはExcelを自動操作するためのプログラミング言語ですが、決してプログラミングの専門知識が必要なわけではありません。基本的には、既存のコード(命令文)をコピーして、Excel内の特定の場所に貼り付けるだけで準備が完了します。
ただし、VBAを使用するファイルは、通常のExcelファイル(.xlsx)ではなく、マクロ有効ブック(.xlsm)という形式で保存する必要があります。マクロと聞くと「ウイルスが怖い」というイメージを持つ方もいるかもしれませんが、自分で作成したコードであれば安全です。設定自体は数分で終わるため、まずは気軽に挑戦してみましょう。
countcolor関数の作成手順!VBAコードの書き方と保存のコツ

それでは、具体的にcountcolor関数をExcelに追加する手順を説明します。難しい操作は一切なく、指示通りにクリックしてコードを貼り付けるだけです。パソコンが苦手な方でも、以下のステップ通りに進めれば、あっという間に自作関数を使えるようになります。まずはExcelを開いて、準備を進めていきましょう。
開発タブを表示してVBAエディタを起動する方法
まず、Excelの画面上部に「開発」というタブが表示されているか確認してください。もし表示されていない場合は、リボンのどこかを右クリックして「リボンのユーザー設定」を選択します。右側のリストにある「開発」にチェックを入れて「OK」を押すと、メニューに「開発」タブが出現します。これがマクロを操作するための入り口となります。
「開発」タブをクリックし、一番左にある「Visual Basic」というボタンを押してください。すると、普段のExcelとは異なるグレーの背景のウィンドウが立ち上がります。これがVBAエディタ(VBE)と呼ばれる、関数の設計図を書くための専用ツールです。ここでの操作が、countcolor関数を誕生させるための第一歩となります。
標準モジュールを挿入してコードを貼り付ける
VBAエディタが開いたら、上部メニューの「挿入」をクリックし、その中から「標準モジュール」を選択してください。画面に真っ白なウィンドウが現れますので、そこに以下のコードをコピーして貼り付けます。このコードが「指定した範囲から同じ色のセルを数える」という命令の内容になります。
Function CountColor(Rng As Range, Sample As Range) As Long
Application.Volatile
Dim Cell As Range
Dim TargetColor As Long
TargetColor = Sample.Interior.Color
For Each Cell In Rng
If Cell.Interior.Color = TargetColor Then
CountColor = CountColor + 1
End If
Next Cell
End Function
コードを貼り付けた後は、特に保存ボタンなどを押さずにVBAエディタの画面を「×」で閉じてしまって構いません。これで、あなたのExcelの中に「CountColor」という新しい関数が登録されました。これで通常のセル上で「=CountColor(…)」と入力して、計算を行う準備が整いました。
ファイルを保存する際の重要な注意点(.xlsm形式)
関数を作成した後は、ファイルの保存形式に注意が必要です。通常の「Excelブック(.xlsx)」として保存してしまうと、せっかく作成したマクロの情報がすべて消去されてしまいます。次にファイルを開いたときに「関数が消えている!」と慌てないために、必ず「Excelマクロ有効ブック(.xlsm)」を選択して保存してください。
「名前を付けて保存」の画面で、ファイルの種類をプルダウンメニューから「Excelマクロ有効ブック(*.xlsm)」に切り替えます。アイコンに小さな「!」マークがついたファイルが作成されれば成功です。これで、次回以降も作成したcountcolor関数を使い続けることが可能になります。共有する際も、この形式のまま送るようにしましょう。
countcolor関数の基本的な使い方と引数の書き方

関数の設定が終わったら、実際にセルで計算を行ってみましょう。countcolor関数の使い方は、SUM関数やAVERAGE関数など、使い慣れた関数とほとんど同じです。ポイントは「どの範囲を数えるか」と「何色を数えるか」の2つを指定することにあります。ここでは、具体的な入力方法と実用的な活用例を紹介します。
セルに数式を入力して計数する手順
countcolor関数の数式は「=CountColor(範囲, 条件色となるセル)」という形になります。例えば、A1からA10までの範囲の中で、C1セルと同じ色のセルを数えたい場合は、「=CountColor(A1:A10, C1)」と入力します。入力が完了してエンターキーを押すと、即座に該当する色の数が表示されるはずです。
この時、2つ目の引数に指定する「条件色となるセル」には、あらかじめ数えたい色で塗りつぶしたセルを用意しておきます。これにより、Excelは「C1セルが赤色だから、A1からA10の中で赤いセルを探せばいいんだな」と理解します。数値を直接指定するのではなく、見本となるセルを指定するのが使いこなしのコツです。
複数の色を別々にカウントする方法
「赤色のセルはいくつ、青色のセルはいくつ」と、色ごとに集計したい場合も非常に簡単です。それぞれの集計用セルの横に、見本となる色を塗ったセルを用意しましょう。例えば、D1に赤、D2に青を塗っておき、E1に赤のカウント用として「=CountColor(範囲, D1)」、E2に青のカウント用として「=CountColor(範囲, D2)」と入力します。
このように設定しておけば、色ごとの内訳を一覧表形式で管理できます。後から「黄色も数えたい」となった場合も、新しい行に見本の色を塗り、数式をコピーするだけで対応可能です。手作業で1つずつフィルターをかけて件数を確認していた手間が省け、ミスのない集計表が完成します。
絶対参照を活用してコピーしやすくするコツ
集計表を縦に並べて作成する場合、オートフィル機能で数式をコピーすることが多いでしょう。その際、集計対象の範囲がズレないように「絶対参照($マーク)」を活用するのがおすすめです。例えば、範囲を「$A$1:$A$100」のように固定しておけば、数式を下にコピーしても常に同じ範囲を調べてくれます。
具体的な数式としては「=CountColor($A$1:$A$100, C1)」のようになります。これなら、見本の色を指定しているC1の部分だけがC2、C3とスライドしていくため、非常に効率よく集計表を広げていくことができます。Excelの基本機能である参照形式を組み合わせることで、自作関数の利便性はさらに高まります。
countcolor関数で数えられるのは、手動で「塗りつぶしの色」を設定したセルです。フォントの色を数えたい場合は、VBAコード内の「Interior.Color」を「Font.Color」に変更した別の関数を作成する必要があります。
countcolor関数が反映されない・動かない時のトラブル解決

countcolor関数を使い始めると、「色を変えたのに数字が変わらない」「エラーが出てしまう」といった現象に遭遇することがあります。これは、Excelの再計算の仕組みや設定が原因であることがほとんどです。トラブルが起きても焦らず、以下のチェックポイントを確認して解決を目指しましょう。
色を変えても数値が変わらない「再計算」の問題
もっとも多い悩みが「セルの色を塗り替えたのに、計算結果の数字が古いまま」という現象です。これは、Excelが「セルの色を変えただけでは、計算をやり直す必要がない」と判断してしまうために起こります。Excelは通常、セルの中身(数値や文字)が書き換えられた時にしか自動再計算を行わない仕様になっているのです。
この問題を解決するには、手動で再計算を実行する必要があります。キーボードの「F9」キーを押すと、シート全体の再計算が行われ、最新のカウント数に更新されます。また、他の適当なセルの値を書き換えることでも更新されます。面倒な場合は、VBAコード内に「Application.Volatile」という一文が入っているか確認しましょう。これがあれば、何らかの操作のたびに計算が走りやすくなります。
条件付き書式でついた色がカウントされない原因
「特定の数値以上になったら自動で赤くなる」といった「条件付き書式」で付いた色は、通常のcountcolor関数ではカウントできません。これは非常に重要なポイントです。VBAが読み取るのは「セルに直接設定された塗りつぶし情報」であり、条件によって画面上にだけ表示されている色情報は取得できない仕様になっています。
もし条件付き書式のセルを数えたい場合は、色を数えるのではなく、その「条件」そのものをカウントするのが正攻法です。例えば「80点以上を赤くする」という設定なら、COUNTIF関数を使って「80点以上のセルの数」を数えれば、結果的に赤色のセルの数と一致します。色そのものを数えたい場合は、手動で色を塗る運用にする必要があります。
セキュリティ警告でマクロが無効になっている場合
ファイルを開いた時に「#NAME?」というエラーが出る場合は、Excelがマクロの動作をブロックしている可能性があります。Excelの初期設定では、セキュリティ保護のためにマクロが自動的にオフになっています。画面上部に「マクロは無効にされました」という黄色いバーが出ていたら、迷わず「コンテンツの有効化」をクリックしましょう。
また、信頼できる場所(特定のフォルダなど)にファイルを保存し、そこからの実行を許可する設定にすることでも解決できます。毎回有効化するのが面倒な場合は、Excelの「オプション」から「トラストセンター(セキュリティセンター)」を開き、マクロの設定を調整することも検討してください。ただし、安全性を考えて信頼できるファイルのみ許可するようにしましょう。
| 現象 | 主な原因 | 解決策 |
|---|---|---|
| 数値が更新されない | 色の変更は再計算のトリガーにならない | F9キーを押す、またはApplication.Volatileを追加 |
| #NAME? エラー | マクロが無効または関数名ミス | コンテンツの有効化を押す、綴りを確認 |
| カウントが0のまま | 条件付き書式を使用している | 手動で色を塗るか、COUNTIF関数を使用する |
| マクロが消えた | .xlsx形式で保存してしまった | .xlsm形式で保存し直してコードを再配置 |
countcolor関数を使わずに色付きセルを数える代替案

「会社のルールでマクロが使えない」「設定が少し面倒に感じる」という場合でも、Excelの標準機能を工夫すれば色付きセルを数えることは可能です。自作関数ほどスマートではありませんが、一時的な集計やシンプルな表であれば十分対応できます。ここでは、マクロを使わない3つの代替テクニックを紹介します。
フィルター機能とSUBTOTAL関数を組み合わせる
最も手軽で実用的なのが、フィルター機能を使った方法です。まず、表の見出しにフィルターを設定し、数えたい列のプルダウンから「色フィルター」を選択して対象の色を絞り込みます。これだけで画面上には特定の色のセルだけが残ります。次に、合計や件数を出す「SUBTOTAL関数」をあらかじめ入力しておきます。
SUBTOTAL関数の引数に「103(COUNTA)」などを指定しておくと、「今画面に見えているセルだけ」をカウントしてくれます。つまり、フィルターで色を絞り込むたびに、その色の数が自動的に算出される仕組みです。これならマクロを使わずに、かつ正確に色付きセルの件数を把握できます。一時的な確認にはこの方法が一番のおすすめです。
検索機能の「書式」指定で個数を確認する
数式を入力することすら手間だと感じるほど急いでいる時は、Excelの「検索」機能が役立ちます。「Ctrl + F」キーを押して検索ダイアログを開き、「オプション」ボタンをクリックします。右側に表示される「書式」ボタンの横の矢印から「セルから書式を選択」を選び、数えたい色のセルをクリックしてください。
そのまま「すべて検索」を押すと、ウィンドウの下部に「〇個のセルが見つかりました」と表示されます。これがその色のセルの総数です。シート上に数値を残す必要がなく、ただ「今いくつあるか知りたい」というだけなら、これが最もスピーディーな解決策となります。一度きりの集計作業であれば、この機能を活用しましょう。
条件付き書式の「条件」そのものを数える方法
もし、集計したい色の正体が「条件付き書式」によるものなら、色を追いかける必要はありません。色がつく理由となっている「条件」を、標準のCOUNTIF関数などで数えれば良いのです。例えば「納期が過ぎたセルを赤くする」という設定なら、「納期の日付が今日より前」という条件で件数をカウントします。
この方法の最大の利点は、動作が非常に軽く、再計算のトラブルも起きないことです。Excelの本来の設計思想に沿ったやり方であるため、ファイルの破損リスクも低く抑えられます。可能であれば、最初から色を塗る「条件」をデータとして明確にしておき、その数値をベースに計算する仕組みを整えるのが、長期的に見て最もメンテナンスがしやすい方法と言えます。
まとめ:countcolor関数の活用でExcelの集計作業を効率化しよう
countcolor関数は、Excelの標準機能では手の届かない「色付きセルのカウント」を可能にする、非常に強力なツールです。VBAを用いた自作関数と聞くとハードルが高く感じるかもしれませんが、本記事で紹介した手順通りにコードをコピーして貼り付けるだけで、誰でもすぐに使い始めることができます。
設定にあたっては、マクロ有効ブック(.xlsm)形式での保存や、色を変更した際の再計算(F9キー)など、いくつか特有の注意点があります。しかし、それらを理解してしまえば、手作業でのカウント作業から解放され、正確かつスピーディーなデータ集計が可能になります。業務で色のついたリストを管理している方は、ぜひこの機会に導入してみてください。
もしマクロの利用が制限されている環境であれば、フィルター機能や検索機能を活用した代替案も有効です。大切なのは、自分の環境や目的に合った最適な方法を選び、Excel作業のストレスを減らすことです。countcolor関数をマスターして、明日からのExcel作業をもっとスマートに、もっと快適に進化させていきましょう。


