【Excel】新年のカレンダーを作成
師走に入り、新年の準備を始めている方も多いことでしょう。
今回はExcelでのカレンダー作成についてご紹介します。若干難しめの関数が出てきますが、上手く活用するといろいろな業務にも応用できるかもしれません。
まずはカレンダーとしての体裁を整え、数字をベタ打ちしてみました。
この状態でも問題はありませんが、今回はここからセル「A5」や「A6」の年月を変えると自動的に全て更新されるようにします。そこで設定するものは以下の3つです。
1.セル「A7」の月の英語表示を関数と表示形式で設定する
2.カレンダー内に表示される数字を「日」だけにする
3.前月の日にちを表示させないようにする
4.翌月の日にちを表示させないようにする
順番に見ていきましょう。
1.セル「A7」の月の英語表示を関数と表示形式で設定する
まずは、セル「A7」に
=DATE(A5,A6,1)
と入力すると、見本の数字から「2022/1/1」もしくは「44562」という数値が返ってきます。数値の見た目は表示形式によって決められていますので、月の英語表示に切り替えましょう。
セル「A7」をアクティブにして表示形式の設定を呼び出しユーザー定義の書式設定に「mmmm」と入力し決定します。
すると「January」と表示が変わり、以降は年や月を変えると自動的に修正されるようになります。
ちなみに「mmm」にすると「Jan」の省略名になります。
2.カレンダー内に表示される数字を「日」だけにする
次にカレンダー内のセルをアクティブにしてユーザー定義の表示形式に「d」と入力します。これは日にちだけを表示する形式です。
3.前月の日にちを表示させないようにする
まずは、最初の1日が決まった曜日ではないため、1日目がどこにくるか判定しなければなりません。見本を参考にセル「B6」に
=IF(WEEKDAY($A$7)=COLUMN(A6),$A$7,””)
セル「C6」に
=IF(B6=””,IF(WEEKDAY($A$7)=COLUMN(B6),$A$7,””),B6+1)
を入力しましょう。その後、C6を右端までオートフィルしてオートフィルオプションから「書式なしコピー」をします。
関数を一つずつ見ていくと、IF、WEEKDAY、COLUMNの3つを使っています。
IFは条件によって処理を分岐させ、
WEEKDAYは日曜日=1~土曜日=7と、順番に数値に変換し、
COLUMNはA列=1、B列=2のように、列番号を数値にしています。
B6の関数を解説すると以下のようになります。
4.翌月の日にちを表示させないようにする
最後は翌月の日にちを表示させないように関数を設定します。
セル「B7」に
=IF(H6>=EOMONTH($A$7,0),””,H6+1)
セル「C7」に
=IF(B7>=EOMONTH($A$7,0),””,B7+1)
を入力しましょう。その後3と同じように右端までオートフィルします。
最後にB7からH7までをコピーして一番下まで貼り付けて完成です。
なお、EOMONTHは月末日を返す関数で、C7の関数は以下のように作成してあります。
ここまで作ってしまえば、後はセル「A5」、「A6」の年と月の数値を変えるだけです。
そのまま使ってもいいですし、カレンダーの上に写真やイラストを入れればオリジナルカレンダーが完成です。