【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」の年と月の数値を変えるだけです。

そのまま使ってもいいですし、カレンダーの上に写真やイラストを入れればオリジナルカレンダーが完成です。