以前、他の記事でgoogleスプレッドシートに入力した日付から土曜・日曜を判定し、色分けする方法を紹介しました。
今回は土日に加え、祝日に色を付ける方法を紹介したいと思います。
Googleスプレッドシートで土曜・日曜は WEEKDAY関数 で簡単に判定する事ができました。
しかし、祝日は各国一律では無い事もあり、Googleスプレッドシートの関数だけでは判定できません。
Googleスプレッドシートで祝日を判定し色を付けるには、何処かしらから祝日の日付が記述されたデータを取得し、それを元にして祝日に該当する日を特定する必要があります。
そこで本記事は、Googleスプレッドシートで、祝日データを取得、そのデータを参照し祝日を判定。祝日の日に色を付ける方法を紹介します。
|
Googleスプレッドシートで祝日に色を付ける手順
Googleスプレッドシートで日付から祝日か否を判断しセルに色を付けるには次の手順になります。
1)祝日の日付が記述されたデータを読み込む
2)条件付き書式のカスタム数式の欄に、祝日の日付が記述されたデータを元に祝日に該当するか否か判定する数式を入力
3)条件付き書式スタイルで、塗りつぶす色を設定
祝日の日付が記述されたデータの場所、Googleスプレッドシートで読み込む方法。
そして、そのデータを使った祝日の判定方法を次の項目から説明したいと思います。
|
COUNTIF関数で範囲内に指定する値が存在するかを判定
ある日付が祝日なのか否かを判定するにはCOUNTIF関数を使います。
COUNTIF関数は、指定したセル範囲に、目的の値が幾つ存在するのかを取得する際に使用します。
範囲の中に一つ含まれていたら「1」、二つ含まれていたら「2」、四つ含まれていたら「4」
と、存在する個数が返されるので、値の重複を確認、又は防いだりする事が可能になります。
COUNTIF関数の使い方は
COUNTIF(範囲, 値)
第一引数に参照する範囲、第二引数に値を指定。
第一引数に指定した範囲内に、”かつカレー”が、何個含まれているのかを調べます。
=COUNTIF(A2:A31,"かつカレー")
menu列に”かつカレー”が4個見つかりました。
このCOUNTIF関数で、指定した日付が参照する祝日のリストに含まれているかを確認できれば、祝日の日付を判定できそうです。
|
内閣府の祝日データ
日付から祝日を判定するには、参照可能な祝日の月日が記載されたデータが必要です。
祝日データはGitHubを始め、様々なサイトで確認・取得できますが、本記事では内閣府のHPで公開されてる国民の祝日データ「shukujitu.csv」を使いたいと思います。
この国民の祝日データはCSV形式で、昭和30年(1955年)から翌年までの祝日・休日の月日、それと祝日・休日の名称が記載され、だれでもダウンロードし扱うことができます。
>>内閣府HP
内閣府が公開しているこの「国民の祝日」のCSVファイルですが、公開された当初はデータの扱いに無知すぎる人間が作ったと言わざるをえない代物で、大不評の嵐でした。
しかし、現在はそれも修正され、大分扱い安い(普通?)の記述になったので取り敢えず安心して使えるのではないでしょうか。
祝日データをダウンロードする
国民の祝日データ「shukujitu.csv」をGoogleスプレッドシートで扱うには、内閣府HPからCSVファイルをダウンロードするのが最も一般的だと思います。
一旦ローカルPCにダウンロードし、それをGoogleスプレッドシートにインポート
取り込んだ祝日データをCOUNTIF関数で参照すれば、該当する日が祝日なのか否かの判定ができます。
■ダウンロードした祝日データをgoogleスプレッドシートにインポートする手順
ファイル > インポート をクリック
「アップロード」をクリックし、内閣府HPからダウンロードしたファイル[shukujitu.csv]をアップロード
インポート場所を指定し、「データをインポート」をクリック
国民の祝日・休日のデータをインポートできました。
祝日データをIMPORTDATA関数でインポートする
もちろん一旦ローカルPCにダウンロードする方法でも祝日を判定する目的は十分に果たせるのですが、デメリットとして、毎年更新される度に祝日データをダウンロードし直す必要があります。
これではせっかくウェッブベースのGoogleスプレッドシートを使っているメリットがありません。
内閣府が公開しているこの祝日データは、幸いな事に更新されてもURLが変わらないので、URLを指定してインポートできるのなら、再ダウンロードする作業が必要無くなります。
googleスプレッドシートには、ファイルのアドレスを指定するだけでデータをインポートできる関数 IMPORTDATA があります。
この IMPORTDATAに、祝日データsyukujitsu.csv のURLを指定すると
=IMPORTDATA("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv")
祝日の月日が読み込まれました。残念ながら祝日の名称は文字化けしてしまいますが、祝日の判定には日付だけが分かれば良いので問題ありません。
インポートした直後の祝日データは、日付表示ではなく12月30日からの日数に基づいて生成されるシリアル値が表示されるかもしれません。その場合は、表示形式 > 数字 > 日付 などで表示形式を変更してください。
|
Googleスプレッドシートで祝日データを使って祝日に色を付ける
では、条件付き書式 祝日データ COUNTIF関数 IMPORTDATA関数 を使って祝日に色を付けてみましょう。
手順は、
条件付き書式のカスタム書式を開き以下の数式を記述
COUNTIF(範囲, 日付)の第一引数にインポートした祝日データのセル範囲を指定、第二引数に判定する日を指定
第二引数に指定した日がインポートした祝日データの範囲に含まれていたら 1 を返すので、該当する日は祝日と判定できます。
=COUNTIF(範囲, 日付) = 1
これで、該当する日が祝日なのか否かを判定できるので、あとは書式設定のスタイルで、塗りつぶす色を設定するだけ。
表示形式 > 条件付き書式 をクリック、条件付き書式設定ルールを表示します。
条件付き書式設定ルールの「範囲に適用」で、祝日か否かを判定する日付が並べられたセル範囲を指定します。
IMPORTDATA関数でインポートした祝日データを参照しCOUNTIF関数で祝日判定した数式を「カスタム数式」に記述します。
=countif(D:D,A2)=1
COUNTIF関数の第2引数に指定した日付が、D列の日付に含まれていれば、「書式設定のスタイル」で指定した色で塗りつぶす。
祝日・休日の色が書式設定で指定した色に変わりました。
インポートした祝日データを直接COUNTIFで判定する
IMPORTDATA関数でインポートした祝日データを使えば、祝日を判定し日付に色を付けられる事が分かりました。
ただ、インポートする祝日データを、わざわざgoogleスプレッドシートのセルに表示する必要があるのでしょうか?
COUNTIF関数で祝日を判定するのに参照先として一旦表示してるだけで、それ以外の意味はありませんよね。
インポートする祝日データを参照するのが目的なら、COUNTIF関数の第一引数に直接インポートしてしまえば同じ挙動になるはず。
条件付き書式のカスタム数式に以下の数式を記述しました。
=COUNTIF(IMPORTDATA("https://www8.cao.go.jp/chosei/shukujitsu/syukujitsu.csv"),A2)=1
問題なく祝日判定され、祝日の日付に色が付けられました。
|
まとめ:COUNTIF関数と祝日データで祝日を判別する
Googleスプレッドシートで半永久的に日付の祝日に色を付ける方法を紹介しました。
祝日の色を変更するには
1)祝日の日付が記述されたデータを読み込む
2)条件付き書式のカスタム数式の欄に、祝日の日付が記述されたデータを元に祝日に該当するか否か判定する数式を入力
3)条件付き書式スタイルで、塗りつぶす色を設定
取り込んだ祝日データを参照し、日付から祝日を判定する数式を条件付き書式のカスタム数式に記述する。
祝日の日付は、取り込んだ祝日データを参照しCOUNTIF関数で判定できます。
祝日データは内閣府で公開している国民の祝日データ「syukujitsu.csv」が、毎年更新され正確なので、特別な理由が無ければこれで問題ないでしょう。
その際に祝日データをIMPORTDATA関数でインポートすると、更新毎にインポートし直す必要が無く半永久的に使う事が可能になります。
|
|
|
国内で10年前からサービスを提供しているタスク管理・プロジェクト管理ツール。
利用者が100万人を超え、エンジニアの方以外にも、事務やデザイナー、マーケター、営業など、多様な職種の方にお使いいただいています。 |
|
|
|
|
|