【Excel】条件付き書式で塗りつぶしたセルの数を自動でカウントする|講座#5
先日、下記記事
【Excel】条件付き書式で表示された色の数を自動集計する|講座#4「できない」と言われていた、条件付き書式で変更した色を自動的にカウントする方法…実はあるんです!分かりやすい解説と、VBAコードをコピペするだけのお手軽作業なので誰でもできます。pcwebfun.com2024.03.19にリクエストをいただきました。
【リクエスト内容】 こちらのVBAを使わせていただき大変助かっております。 同じように背景色を条件付き書式で色付けしたセルのカウントはできますか?
文字色の数をカウントできるなら、塗りつぶしたセルの数もカウントしたい。
そうお考えになるのは当然ですよね!
タイトルが紛らわしく、大変失礼いたしました。
この記事をお読みいただけば、(前回と同様に)VBAコードをコピペするだけで簡単に設定できます!
もちろん「条件付き書式で付けた文字色の数を自動カウントする」コードと併用可能!
ぜひご活用ください。
これまた前回までと同様、あえてバージョンの低いエクセルで作っています。2021でも動作確認済みですので、「自分が使ってるのは20〇〇なんだけど……」という方もぜひ試してみて下さい。
FURIO
各画像はクリックで拡大できるよ!
目次
- 自動書式で塗りつぶされたセルの数をカウントする方法
- 作業➊ 塗りつぶしセルの設定
- 作業❷ 関数の入力
- 作業❸ VBAにコードを設定(コピペで簡単!)
- 作業❹ ファイルの保存
- 更新ボタンを作ろう!
- 作業➊ 更新ボタンの作成
- 作業➋ VBAにコードを設定(コピペで簡単!)
- 作業➌ マクロの割り当て
自動書式で塗りつぶされたセルの数をカウントする方法
分かりやすくするため、前回と同じくカレンダー画像を使って説明します。
今回行うのは、塗りつぶされたセル数の集計です。
下記画像で説明しますと、「1・2・3」の背景色として薄いオレンジ色が付けられていますね。
この「塗りつぶされたセルの数」を、自動でカウントできるようにしていきましょう!
作業➊ 塗りつぶしセルの設定
「この背景色がついたら、数をカウントしたい」
あなたがそうお考えの色で、適当なセルを塗りつぶしましょう。
今回は適当に「G1」セルを塗りつぶしました。
FURIO
塗りつぶしセルは別シートに作っても大丈夫だよ!
作業❷ 関数の入力
せっかくですので、前回までのカレンダーを活かします。
色を塗ったセルは祝日になりますので、休日の下に「(うち祝日)」という欄を設けました。
この「G15」セルに、
=CountColor2(B6:H11,G1)をコピペします。
「B6:H11」は範囲、「G1」は対象とする塗りつぶしセルです。
ここまでの作業を行っても、エラー表示になっていると思います。
が、これで合っています!
ここにマクロをはめ込めば、アッという間に機能しますのでご心配なく!
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
手入力で変更した色にも対応するコードなので、「条件付き書式で変更された色」含め、すべて自動集計できるよ!
作業❹ ファイルの保存
保存するときは「マクロ有効ブック」を選択しましょう!
「ファイルの種類」から「Excelマクロ有効ブック」を選択します。
ふつうにエクセルとして保存すると、せっかくのVBAコードが消えてしまいますのでご注意ください!
更新ボタンを作ろう!
上記のVBAを試したけど、カウントが変更されない…という時の対処法です。
たとえば自分でセルを塗りつぶしたけど、どこかのセルをダブルクリックしないとカウント数が変わらない…ということが起こると、困ってしまいますよね。
そこで、これを押せば一発変更という「更新ボタン」を作りましょう!
作り方はとっても簡単。
コードもコピペで大丈夫です。
作業➊ 更新ボタンの作成
➊「開発」タブにある、「挿入」の▼をクリックし「フォームコントロール」を開きます。
➋ マクロを登録するためのボタンを選びます。
今回は普通に左上の「ボタン」を選択しますが、
自分のお好みでイラストを使うこともできます。
▲ こういったイラストにもマクロ登録できるよ!
➌ 今回は、このあたりに設置します。
➍ ダイアログボックスが表示されますが、ひとまずOKで大丈夫です。
➎ ボタンが設置されました。設置後でも名前変更できます。
作業➋ VBAにコードを設定(コピペで簡単!)
➊「開発」タブのまま「Visual Basic」を開きます。
➋ 開くと、標準モジュールで登録したコードが表示されると思います。
その一番下をクリックすると、カーソルが点滅します。
➌ カーソルの位置に、以下のコードをコピペします。
Sub updata() Application.Calculate End Sub作業➌ マクロの割り当て
➊ 通常のエクセルに戻り、設置したボタンを右クリック→「マクロの登録」を選択
➋「updata」という項目があるはずなので、それを選択 → OK
➌ 試しにどこかのセルを塗りつぶしてみましょう。
塗りつぶしただけでは集計数は変わりませんが、更新ボタンを押せば自動でカウントされます。
これで完成です!
本当にお疲れ様でした!
FURIO
お疲れさまでした!
こちらの記事も、お役に立てれば何よりです。
よかったら講座の最初からカレンダーを作ってみてね。
【関連記事】
・【Excel】このファイルのソースが信頼できないと出た時の対処法
・【Excel】条件付き書式で表示された色の数を自動集計する
・【Excel】条件付き書式で色をつけたセルの数値を自動で合計する