月間カレンダーの作成

日付の操作については個々にいろいろ説明しましたから、ここで月間カレンダーの表を作成してみます。
このページでは曜日判定までで、祝日判定は行ないません。   祝日まで反映させるカレンダーは次ページ「営業日カレンダー」をご覧下さい。
画面上では上から3つめの画像のサンプルになります。
勤務表や月間スケジュールなどに利用できる月間表の日付部分です。
月間カレンダーのサンプル
(画像をクリックすると、このサンプルがダウンロードできます)
使い方は、左上(A1セル)に該当月の日付を入力するだけです。左上のセルは日付を入力しても「yyyy年mm月度」と表示されるようになっています。
日付は何日でも結構ですが、カレンダーは必ず「1日」から順に表示されます。

「1日」の日付のセル(A3セル)の計算式です。
1日の日付の計算式
画面上は「1」だけですが、書式は数字ではなく、日付ユーザー書式の「d」です。式はA1セルから「年(YEAR)」と「月(MONTH)」を取り出し、 「日」を「1」としてDATE関数で日付にし直しています。
2日目からは、1行前の日付に1を加えれば良いので「=R[-1]C+1」としています。

「1日」の曜日のセル(B3セル)の計算式です。
1日の曜日の計算式
曜日は「日付から曜日を算出」で説明したのと同じです。曜日の文字列「日月火水木金土」は31回も使うわけですから、 式に埋め込まずR1C4(D1)セルに白文字で隠れるようにして収容してあるものを使っています。土日が色が変わるのは、条件付き書式です。

これで終わりのようですが1つ問題があります。
月末の日付の処理
月間カレンダーは31日分用意しているわけですから、単純に「前行の日付+1」としてしまうと、短い月では月末日を過ぎて、(翌日の)1日に戻ってしまいます。
2月は28日の場合があるわけですから、29日の行からはその日(前行の日の翌日)が左上で指定した月と同じかを判断するようにします。同じ月なら日付をセットし、違うなら「0」固定としています。 (シートはゼロ値を表示させないようにします。)

「曜日」も同様です。
月末の曜日の処理
月末日以降は日付がゼロになっているわけですから、「曜日」は日付がゼロ以外の時だけ表示させるようにします。
なお、B列に単純にA列の日付を転記させて、セルの書式をユーザー設定の「aaaa」とすると「月曜日」と表示されますので、 見かけ上で曜日であれば良いのであればこれも1つの方法です。