【Excel】条件付き書式で塗りつぶしたセルの数を自動でカウントする|講座#5

Word・Excel

先日、下記記事

【Excel】条件付き書式で表示された色の数を自動集計する|講座#4
「できない」と言われていた、条件付き書式で変更した色を自動的にカウントする方法…実はあるんです!分かりやすい解説と、VBAコードをコピペするだけのお手軽作業なので誰でもできます。

にリクエストをいただきました。

 

【リクエスト内容】
こちらのVBAを使わせていただき大変助かっております。
同じように背景色を条件付き書式で色付けしたセルのカウントはできますか?

 

文字色の数をカウントできるなら、塗りつぶしたセルの数もカウントしたい。

そうお考えになるのは当然ですよね!

タイトルが紛らわしく、大変失礼いたしました。

 

この記事をお読みいただけば、(前回と同様に)VBAコードをコピペするだけで簡単に設定できます!

 

もちろん「条件付き書式で付けた文字色の数を自動カウントする」コードと併用可能

ぜひご活用ください。

 

これまた前回までと同様、あえてバージョンの低いエクセルで作っています。2021でも動作確認済みですので、「自分が使ってるのは20〇〇なんだけど……」という方もぜひ試してみて下さい。

 

FURIO
FURIO

各画像はクリックで拡大できるよ!

 

スポンサーリンク
スポンサーリンク

自動書式で塗りつぶされたセルの数をカウントする方法

分かりやすくするため、前回と同じくカレンダー画像を使って説明します。

 

今回行うのは、塗りつぶされたセル数の集計です。

下記画像で説明しますと、「1・2・3」の背景色として薄いオレンジ色が付けられていますね。

 

 

この「塗りつぶされたセルの数」を、自動でカウントできるようにしていきましょう!

 

作業➊ 塗りつぶしセルの設定

「この背景色がついたら、数をカウントしたい」

あなたがそうお考えの色で、適当なセルを塗りつぶしましょう。

 

今回は適当に「G1」セルを塗りつぶしました。

 

FURIO
FURIO

塗りつぶしセルは別シートに作っても大丈夫だよ!

 

作業❷ 関数の入力

せっかくですので、前回までのカレンダーを活かします。

色を塗ったセルは祝日になりますので、休日の下に「(うち祝日)」という欄を設けました。

 

この「G15」セルに、

=CountColor2(B6:H11,G1)

をコピペします。

「B6:H11」は範囲、「G1」は対象とする塗りつぶしセルです。

 

ここまでの作業を行っても、エラー表示になっていると思います。

 

が、これで合っています!

ここにマクロをはめ込めば、アッという間に機能しますのでご心配なく!

 

 

FURIO
FURIO

続いて、VBAの作業だよ



作業❸ VBAにコードを設定(コピペで簡単!)

「開発」タブを表示します。

 

【開発タブを表示する方法】

どこでもいいので、リボンの上で右クリック

→「リボンのユーザー設定」を選択

 

「開発」にチェックを入れる→OKを押す

これで表示されます!

 

「開発」タブの「Visual Basic」を開きます。

 

左側、白い部分で右クリック →「挿入」→「標準モジュール」を選択

すでに「標準モジュール」がある方は、「Visual Basic」をクリックすれば該当モジュールが開くと思います。

 

下記画像を参考にして、

 

右側に表示されたスペースに、以下のコードをコピペして下さい。

※すでに標準モジュールを使用している方は、一番下の空白部分にコピペしてください。

Function CountColor2(rng As Range, r2 As Range) As Long
Dim myRng As Range
Dim Col_cnt As Long
Dim sh As Worksheet
Application.Volatile
Col_cnt = 0
Set sh = rng.Parent
For Each myRng In rng
If sh.Evaluate("CColor2(" & myRng.Address & ")") = r2.Interior.Color Then
Col_cnt = Col_cnt + 1
End If
Next myRng
CountColor2 = Col_cnt
End Function

Function CColor2(r As Range) As Long
CColor2 = r.DisplayFormat.Interior.Color
End Function

上記コードは下記リンク先にて紹介されていたコードを必要に応じて一部改変したものです。

エクセルの学校:エクセル質問ボード

時間をかけて色々と調べましたが、自動カウントする方法として一番安定し、かつ一番便利に使えるコードです。ご自身のために使用したいという方にも、非常に参考になりますので推薦します。

 

Visual Basicには保存ボタンがありませんので、×で閉じます。

エクセルの表示はまだエラーのままだと思いますので、どこでもいいからセルをダブルクリックすると表示が変わります。

 

 

FURIO
FURIO

手入力で変更した色にも対応するコードなので、「条件付き書式で変更された色」含め、すべて自動集計できるよ!

 



作業❹ ファイルの保存

保存するときは「マクロ有効ブック」を選択しましょう!

「ファイルの種類」から「Excelマクロ有効ブック」を選択します。

 

ふつうにエクセルとして保存すると、せっかくのVBAコードが消えてしまいますのでご注意ください!

更新ボタンを作ろう!

上記のVBAを試したけど、カウントが変更されない…という時の対処法です。

 

たとえば自分でセルを塗りつぶしたけど、どこかのセルをダブルクリックしないとカウント数が変わらない…ということが起こると、困ってしまいますよね。

 

そこで、これを押せば一発変更という「更新ボタン」を作りましょう

 

作り方はとっても簡単。

コードもコピペで大丈夫です。

 

作業➊ 更新ボタンの作成

「開発」タブにある、「挿入」の▼をクリックし「フォームコントロール」を開きます。

 

マクロを登録するためのボタンを選びます。

今回は普通に左上の「ボタン」を選択しますが、

 

自分のお好みでイラストを使うこともできます。

▲ こういったイラストにもマクロ登録できるよ!

 

今回は、このあたりに設置します。

 

ダイアログボックスが表示されますが、ひとまずOKで大丈夫です。

 

ボタンが設置されました。設置後でも名前変更できます。

 



作業➋ VBAにコードを設定(コピペで簡単!)

「開発」タブのまま「Visual Basic」を開きます。

 

 開くと、標準モジュールで登録したコードが表示されると思います。

その一番下をクリックすると、カーソルが点滅します。

 

カーソルの位置に、以下のコードをコピペします。

Sub updata()
Application.Calculate
End Sub

 

作業➌ マクロの割り当て

通常のエクセルに戻り、設置したボタンを右クリック→「マクロの登録」を選択

 

「updata」という項目があるはずなので、それを選択 → OK

 

試しにどこかのセルを塗りつぶしてみましょう。

塗りつぶしただけでは集計数は変わりませんが、更新ボタンを押せば自動でカウントされます。

 

これで完成です!

本当にお疲れ様でした!

 

FURIO
FURIO

お疲れさまでした!

こちらの記事も、お役に立てれば何よりです。

よかったら講座の最初からカレンダーを作ってみてね。

 

♦今回の講座一覧

【Excel】カレンダー作成で基礎から学べるエクセル講座#1
初心者~中級者向け。超基本的な操作から、誰も教えてくれない応用テクニックまで。この記事だけで、ワンランク上のエクセル操作が学べます!
【Excel】西暦を入力すると、日付が自動変更される方法|講座#2
カレンダー作成で学ぶエクセル講座#2。西暦を入力すると、それに対応したすべての日付が自動で表示される方法です。
【Excel】カレンダーに合わせて日付の色を自動で変える|講座#3
自動でカレンダーの日付を表示したとき、さらに自動で色を変更する方法です。関数を使って「休日を赤」に、表示されてしまった「当月以外の日付を薄い灰色」にすることができます。
【Excel】条件付き書式で表示された色の数を自動集計する|講座#4
「できない」と言われていた、条件付き書式で変更した色を自動的にカウントする方法…実はあるんです!分かりやすい解説と、VBAコードをコピペするだけのお手軽作業なので誰でもできます。



コメント

  1. PI より:

    条件付き色のカウント、とても役に立っております。
    時間別にカウントが出来便利に使わせてもらっています。
    困っていることがありまして、朝6:00~23:00までの分単位で制作し、列単に150行ほどのデーターです。車両の出庫管理です。シートは22シート。非常に重くて、
    何かいい方法はありますでしょうか・・・
    作業が終わってから、更新ボタンを押してでも構いません。
    お知恵を頂ければと思います。

    • FURIO より:

      コメント及び、記事が役に立っているとのこと、本当にありがとうございます!
      ご質問いただきました件で、数点確認させていただきたいのですがよろしいでしょうか?
      ・22シートすべてでカウントされている状態でしょうか?
      ・カウントを行う前は、サクサク動いていましたでしょうか?(マクロや計算式を入れてから重くなりましたか?)
      ・常に重い状態でしょうか?それとも、一定の操作を行うと重くなりますか?
      ・最終的に求めているのは、重くて動かない状況を改善するということでよろしいですか?
      ・エクセルのバージョンは何を使われていますか?(Excel 2024など)
      こちらの記事で紹介している方法は「色がついたらカウントされる」仕組みですので、ひとつの作業につきひとつカウントされる…と想像しているのですが、もしかして別に集計シートも作られていたりするのでしょうか?いまいち状況が把握できておらず申し訳ありません。また詳しいことをお教えいただければ対策が立てられるかもしれません。よろしくお願い致します。