※ Microsoft365(旧Office365)Excelの画像を使って解説しています。
カレンダーが翌月に変わった時に、月末最終日の日付の表示・非表示が自動で変わると大変便利です。本記事ではIF関数・DAY関数・DATE関数を組み合わせた方法と条件付き書式を使った方法をご紹介します。
今回の記事内容は「Excelで、「にしむくさむらい」の月では31日(2月のカレンダーでは(29・30・31日)を自動で非表示にし、大の月では自動で表示させるよう設定する方法の解説」になります。
関数で31日のない月末を自動で表示・非表示する方法
下図の万年カレンダーの月間スケジュール表では「A1」セルに「年」の数字が入力されており、「A2」セルには「月」の数字がプルダウンリストで選択できるようになっています。
1.DATE関数で月末の年月日を取得
DATE関数は年月日の数字から日付を取得します。引数は「年」「月」「日」の3つです。DATE関数ダイアログボックスの入力は以下の通りです。
- DATE関数「年」に「A1」セルをクリックして入力
- F4キーを押して絶対参照にする
- DATE関数「月」に「A2」セルをクリックして入力
- F4キーを押して絶対参照にする
- DATE関数「日」に「31」と数値を入力
- 「OK」をクリックする
この数式 DATE($A$1,$A$2,31) をコピーしておきます。
2.DATE関数で取得した日付データからDAY関数で「日にち」だけ抽出
DAY関数は日付データから「日にち」だけを抽出します。DAY関数の引数に、日付データを取得するDATE関数を貼り付けます。DAY関数ダイアログボックスの入力は以下の通りです。
この数式 DAY(DATE($A$1,$A$2,31)) をコピーしておきます。
3.DAY関数で抽出した「日にち」をIF関数の条件にする
例えばDATE関数に「2024年6月31日」と指定すると、翌月初日「2024年7月1日」が返ります。この日付データからDAY関数で日にちだけを抽出すると「1」になります。
IF関数で「DAY関数で抽出した「日にち」が31だったら、そのまま31と表示し、31でなかったら、空白にする」という数式を入力すると、31日の無い月では空白が返り、31日がある月ではそのまま「31」という数字が返ります。
IF関数のダイアログボックスの入力は以下の通りです。
- 月間スケジュール表の31日の「A33」セルをクリックして選択
- IF関数のダイアログボックスを開く
- 引数「論理式」にDATE関数を入れ子したDAY関数の数式「DAY(DATE($A$1,$A$2,29))」を入れる
- 入力した数式の後に続けて「=31」と入力する
- 「値が真の場合」に31と数字を入力する
- 「値が偽の場合」に空白を意味する「“”」を入力する
- 「OK」をクリックする
条件付き書式で31日のない月末を自動で表示・非表示する方法
条件付き書式を使う場合は、月間スケジュール表の日にちの数字が入るセルには「=DATE($A$1,$A$2,ROW(A1))」という数式を入れ、日にちの数字はROW関数で行番号から取得しています。
この数式を31日までオートフィルコピーすると、小の月の31日のセル「A33」には翌月初日の「1」が表示され、日付データの月が変わっています。
「MONTH関数に「A33」セルを指定して月の数字だけを取得し、その数字が「A2」セルの月の数字と違っていたら」という数式「=MONTH($A$33)<>$A$2」を条件にして書式を設定します。
- 31日の行全体を選択する
- 「ホーム」タブの「条件付き書式」をクリックする
- プルダウンメニューの「新しいルール」をクリックする
- 開いたダイアログで「数式を使用して書式設定するセルを決定」をクリックする
- 「次の数式を満たす場合に値を書式設定」のボックスに「=MONTH($A$33)<>$A$2」と入力
- 「書式」をクリックする
- 「フォント」タブをクリックして「色」を白に設定
- 「塗りつぶし」タブをクリックして「色」を白に設定
- ダイアログに戻り、「OK」をクリックする
- 31日のセルを含む行全体が非表示になる
カレンダーやスケジュール表だけでなく、月末31日の表示・非表示をどう処理するかに突き当たる場面は多いと思います。今回は、関数だけで処理する方法と、条件付き書式を使う方法の2つをご紹介しました。Excel業務にお役立て下さい。