シンプルなカレンダーを作成した話
あらすじ
カレンダーをExcelで作って欲しいとの依頼があり、「そういや、作ったことないしなー」と思ったので依頼を受けました。
要件
西暦を指定すれば1年分のカレンダーが作成できること
土曜日と日曜日と祝日は平日とは異なる色を使用すること
祝日は自動で取得すること
公開できるもの
依頼品をそのまま載せるわけには行かないので、Googleスプレッドシートに移植してゴニョゴニョしたものを公開します。
以下は、元のデータです。2025年以降は、こちらをコピーしてご利用ください(要:Googleアカウント)
使い方
下準備(祝日取得)
拡張機能→Apps Scriptを選択
実行
権限を確認
アカウントを選択
詳細
「Holidays(安全ではないページ)に移動」
許可
再度、実行
印刷
シートを選択
西暦と月を指定
印刷
あとがき
苦労話
第1週の日曜日の日付(左上)を取得するのにとても時間を割きました。結局、指定した年月の1日(例:2024-03-01)が何曜日であるかを週番号(1~7)で取得し、指定した年月の1日を引きます。その後、各曜日の週番号を足すことで第1週が完成します。
コードにするとこんな感じです。
=LET(
year,$C$1,
month,$A$2,
date,DATE(year,month,1),
weekday,WEEKDAY(date,1),
weekdayToNum,SWITCH(A$3,"Sun",1,"Mon",2,"Tue",3,"Wed",4,"Thu",5,"Fri",6,"Sat",7),
weekSun,date-weekday,
weekSun+weekdayToNum
)
第2週以降は下記のコード。要は第1週の土曜日の日付をSEQUENCE関数で単純に足していきます。
=SEQUENCE(5,7,G4+1)
ちょっとした愚痴
Excelでは条件付き書式にCOUNTIF関数を含めてもしっかり動作するのですが、Googleスプレッドシートでは実行できませんでした。
他にも条件付き書式の参照先は同じシート内でないと動作しない縛りもあります。
渋々、作業列を作り対応したのでした。
ここから先は
0字
¥ 300
この記事が気に入ったらサポートをしてみませんか?