やりたいこと
I2に指定した月をいれると、自動的にカレンダーの日にちが変わるものを作りたい
今回はGASを使わずに、関数と条件付き書式だけで実装
参考
https://office-hack.com/spreadsheet/spreadsheet-calendar/
こちらを参考にさせていただきました。
というよりこの回はほとんどこちらの通りに作成していますので、
より詳しくは上記URLを参考にしてください。
次の回で、GASを使ってカレンダーに記載する予定の数に応じて
行を増やしながらカレンダーを作成します。
実装
日付の自動入力
C6セル(1週目の日曜日の日付)に以下計算式を入力
=DATE(J2,I2,1)-(WEEKDAY(DATE(J2,I2,1),1) - 1 )
Date関数はDATE(年, 月, 日)
で日付に変換する関数です。
Weekday関数はWEEKDAY(日付, [種類])
で指定した日付に対応する曜日を数値で返します。
今回は種類に「1」を指定することで、日曜日=1、土曜日=7としています。
あとは、=前日セル+1
ってやっていけばOKです
写真では既に日にちの表示になっていますが、
実際はyyyy/mm/dd
の形で表示されてるかと思います。
表示形式>>数字>>カスタム日時
から以下のように設定してください。
日付の色
スプレッドシートの[条件付き書式設定]で、土日と祝日に自動的に色をつけます。
条件付き書式のデータ範囲は、少しめんどくさいのですが、
日付が入っているセルを選択します。
土日
条件でカスタム数式
を選択し、
土曜日の場合は、=WEEKDAY(C6)=7
日曜日の場合は、=WEEKDAY(C6)=1
で設定します。
(C6)
と入れているところは、範囲開始の先頭セルを選んでいます。
祝日
祝日の場合は、まず「祝日」シートを作って
以下のように入力します
カレンダーのシートに戻り、
条件付き書式に土日と同様に範囲を設定し、
カスタム数式
で以下を入力
=COUNTIF(INDIRECT("祝日"), C6)=1
今月以外をグレーアウト
条件付き書式に土日と同様に範囲を設定し、
カスタム数式
で以下を入力
=MONTH(C6)<>VALUE(SUBSTITUTE($I$2,"月",""))
$I$2
と入力しているところは、実際に月を入力するセルを絶対参照で入れます。
②はこちら