なんでもエクセル(Nandemo Excel)

何でもエクセルでやってしまう そこのあなた。ようこそ

数式/関数:カレンダーを作る2

忘れた頃に、前回のスピル表示のカレンダーの続き。Microsoft365じゃないバージョンでやるならどうするか。コツさえつかめば超簡単。

こういう形の七曜カレンダーは、「日曜始まり/月曜始まり」と「当月の前後の日を表示する/しない」で併せて4種類に大別される。大した違いはないけど、前月や翌月を表示させるかどうかで多少作り方に違いが出てくる。以下、当月だけ表示させるものを「単月カレンダー」、月を跨いで表示させるものを「月跨ぎカレンダー」と呼ぶことにする。

ではまず単月カレンダーから。前提として、A1に「年」、B1に「月」が入力されているものとする。

単月カレンダーの場合、一行目には1~7日が表示される。日曜始まりのカレンダーの場合、月初が土曜日だと他の曜日は全て空白になるので、計算の基準になるのは「第一週の土曜日」になる。月曜始まりのカレンダーなら「第一週の日曜日」が基準。

単月カレンダー
G3:=WORKDAY.INTL(DATE(A1,B1,0),1,"1111101") A3~F3:=IF(B3="","",IF(DAY(B3)=1,"",B3-1)) A4~A8:=IF(G3="","",IF(DAY(G3+1)=1,"",G3+1)) B4~G8:=IF(A4="","",IF(DAY(A4+1)=1,"",A4+1)) 表示形式をユーザー定義で「d」に設定

この数式を「~」で書いた先までコピーするだけ。月曜始まりのカレンダーにしたい時は G3の数式を

G3:=WORKDAY.INTL(DATE(A1,B1,0),1,"1111110")

とすればいい。

続いて、月跨ぎカレンダーの場合。こっちはもっと簡単。

A3:=WORKDAY.INTL(DATE(A1,B1,2),-1,"1111110")
B3~G3:=A3+1
A4~G8:=A3+7
表示形式をユーザー定義で「d」に設定

これも数式を「~」で書いた先までコピーするだけ。カレンダーを作る記事はたくさんあるけど、これより簡単な方法が果たしてあるだろうか。

後は前月・次月の日付の文字色をグレーにするとか、祝日に色を入れるとかその程度だけど、そんなものは条件付き書式ですぐに終わる。

このカレンダーのいいところは、どこに複製しても表示が崩れない(絶対参照がひとつもない)ことにあるので、条件付き書式もそれに倣うことにする。

前月の日付の文字色をグレーに
「A3:G4」を選択して[条件付き書式]の[新規ルール] ルールの種類:数式を使用して、書式変更するセルを決定 数式:=DAY(A3)>15 →[書式]を「文字色:グレー」にして[OK]
翌月の日付の文字色をグレーに
「A7:G8」を選択して[条件付き書式]の[新規ルール] ルールの種類:数式を使用して、書式変更するセルを決定 数式:=DAY(A7)<15 →[書式]を「文字色:グレー」にして[OK]

ついでに祝日にも色を入れておこう。「祝日一覧」がどこかに作ってあるものとして、

祝日の日付を赤字に
「A3:G8」を選択して[条件付き書式]の[新規ルール] ルールの種類:数式を使用して、書式変更するセルを決定 数式:=COUNTIF(祝日一覧,A3)>0 →[書式]を「文字色:赤」にして[OK]

おしまい。このやり方なら、後から書き込み用の行を足してもセルに結合を入れても何の問題もない。固定で参照しているセルがないので、カレンダーを別の場所に複製しても全く問題なし。