【Excel】条件付き書式で表示された色の数を自動集計する|講座#4

Word・Excel

今回はいよいよ最終回「カレンダーの日数を、色で自動集計する方法」をご紹介します。

 

集計方法は「条件付き書式」にて自動表示された色で行います。

これ、ネットでは「できない」と言われて別の方法が公開されたりしていますが、マクロを使えばできます!

 

やっぱり余計な手間をかけずに一発変換したいですよね。

ぜひ「こんなに楽になるなんて!」を体験して下さい。

 

難易度 中級~上級

 

FURIO
FURIO

いよいよマクロ(VBA)を使うよ!

といってもコピペで出来る親切設計♪

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

 

▼ 前回記事

【Excel】カレンダーに合わせて日付の色を自動で変える|講座#3
自動でカレンダーの日付を表示したとき、さらに自動で色を変更する方法です。関数を使って「休日を赤」に、表示されてしまった「当月以外の日付を薄い灰色」にすることができます。
スポンサーリンク
スポンサーリンク

今回やりたいこと(自動書式をカウント)

今回行うのは、日数の集計です。

ここまで作成してきたカレンダーで、以下のように

当月=黒
当月以外=灰色

祝日=赤

で表示されるようになりました。

 

この色を使って、

当月

営業日

休日

の各日数を自動でカウントできるようにしたいと思います。

 

FURIO
FURIO

カレンダー以外にも

色々と応用がきくので

ぜひ使ってみて下さい!

 

カレンダーの日数を自動集計する

今回は「CountColor」という関数を使います。

文字どおり色をカウントする関数で、

=CountColor(範囲,対象の色)

数式ではこのように表されます。

これによって、範囲内に対象の色がいくつあるかをカウントします。

 

では、順番に作業してみましょう!



作業➊ 関数の入力

今回カウントしたいのは、「当月の日数」「営業日」「休日」です。

カレンダーの下に作りましょう。

※各月、3行スペースをとっていたのはこのためです。

 

「G13」セルに

=CountColor(B6:H11,B4)

とコピペします。

数えたい色は「黒」なので、B4を選択しています。

 

 同じように「G14」セルに

=CountColor(B6:H11,B5)

とコピペします

数えたい色は「赤」なので、B5を選択しています。

 

※注意※
➋も➌も、対象として選択するのは完全に同一色のセルにしてください。

 

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

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

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

 

当月の日数は、単純に「営業日+休日」です。

=SUM(G14)+SUM(G13)

この日数表示はなくてもいいですが、ミスに気づくためのものでもあります。

たとえば1月が「31」と表示されなかった場合、➋か➌の計算式か設定が間違っている可能性があります。

 

 E12:H14の範囲を、そのまま各月にコピペします。

 

FURIO
FURIO

続いて、VBAの作業だよ



作業➋ VBA(コピペで簡単!)

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

 

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

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

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

 

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

これで表示されます!

 

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

 

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

 

 下記画像を参考にして、

 

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

Function CountColor(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(“CColor(” & myRng.Address & “)”) = r2.Font.Color Then
Col_cnt = Col_cnt + 1
End If
Next myRng
CountColor = Col_cnt
End Function

Function CColor(r As Range) As Long
CColor = r.DisplayFormat.Font.Color
End Function

Sub updata()
Application.Calculate
End Sub

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

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

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

 

保存ボタンのようなものはありませんので、そのままエクセルに戻ります。

まだ表示が元のままだと思うので、どこでもいいからセルをクリックすると表示が変わります。

 

FURIO
FURIO

手入力で変更した色にも対応するコードにしてあるよ。

これで「条件付き書式で変更された色」含め、すべて自動集計できるよ!

 

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

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

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



更新ボタンを作ろう!

じつは上記のVBAでは、何かが変更されても自動で変わらないという欠点があります。

たとえば西暦を2024→2025にしたり、休みの日を自分で赤い色に変更しても、どこかのセルをクリックしないと表示が変わらないのです。

 

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

 

作り方はとっても簡単。

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

 

作業➊ 更新ボタンの作成

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

 

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

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

 

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

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

 

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

 

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

 

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



作業➋ VBA(コピペで簡単!)

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

 

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

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

 

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

Sub updata()
Application.Calculate
End Sub

 

作業➌ マクロの割り当て

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

 

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

 

試しに西暦を変更してみましょう。

日付は変更されても、日数は変更されないと思います。

そこで更新ボタンを押すと、日数も正しく変更されます。

 

これで完成です!

すべての作業は終わりました。

本当にお疲れ様でした!

 

FURIO
FURIO

最後まで本当にお疲れさまでした!

でも、きっとお役に立てる内容だったと思います。

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

 

♦今回の講座一覧

【Excel】カレンダー作成で基礎から学べるエクセル講座#1
初心者~中級者向け。超基本的な操作から、誰も教えてくれない応用テクニックまで。この記事だけで、ワンランク上のエクセル操作が学べます!
【Excel】西暦の入力で、日付を自動表示する方法|講座#2
カレンダー作成で学ぶエクセル講座#2。西暦を入力すると、それに対応したすべての日付が自動で表示される方法です。
【Excel】カレンダーに合わせて日付の色を自動で変える|講座#3
自動でカレンダーの日付を表示したとき、さらに自動で色を変更する方法です。関数を使って「休日を赤」に、表示されてしまった「当月以外の日付を薄い灰色」にすることができます。



コメント