Excelで31日のない月末の表示・非表示を自動で変える

Excelで31日のない月末の表示・非表示を自動で変える
Excelの一覧

※ Microsoft365(旧Office365)Excelの画像を使って解説しています。

Excelで作成する月間スケジュール表付きの万年カレンダーを例にします。
カレンダーが翌月に変わった時に、月末最終日の日付の表示・非表示が自動で変わると大変便利です。本記事ではIF関数・DAY関数・DATE関数を組み合わせた方法と条件付き書式を使った方法をご紹介します。

記事の内容

今回の記事内容は「Excelで、「にしむくさむらい」の月では31日(2月のカレンダーでは(29・30・31日)を自動で非表示にし、大の月では自動で表示させるよう設定する方法の解説」になります。

関数で31日のない月末を自動で表示・非表示する方法

下図の万年カレンダーの月間スケジュール表では「A1」セルに「年」の数字が入力されており、「A2」セルには「月」の数字がプルダウンリストで選択できるようになっています。
Excelで31日のない月末の表示・非表示が自動で変わる1

1.DATE関数で月末の年月日を取得

DATE関数は年月日の数字から日付を取得します。引数は「年」「月」「日」の3つです。DATE関数ダイアログボックスの入力は以下の通りです。

  1. DATE関数「年」に「A1」セルをクリックして入力
  2. F4キーを押して絶対参照にする
  3. DATE関数「月」に「A2」セルをクリックして入力
  4. F4キーを押して絶対参照にする
  5. DATE関数「日」に「31」と数値を入力
  6. 「OK」をクリックする

Excelで31日のない月末の表示・非表示が自動で変わる2

この数式 DATE($A$1,$A$2,31) をコピーしておきます。

2.DATE関数で取得した日付データからDAY関数で「日にち」だけ抽出

DAY関数は日付データから「日にち」だけを抽出します。DAY関数の引数に、日付データを取得するDATE関数を貼り付けます。DAY関数ダイアログボックスの入力は以下の通りです。
Excelで31日のない月末の表示・非表示が自動で変わる3

この数式 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関数のダイアログボックスの入力は以下の通りです。

  1. 月間スケジュール表の31日の「A33」セルをクリックして選択
  2. IF関数のダイアログボックスを開く
  3. 引数「論理式」にDATE関数を入れ子したDAY関数の数式「DAY(DATE($A$1,$A$2,29))を入れる
  4. 入力した数式の後に続けて「=31」と入力する
  5. 「値が真の場合」に31と数字を入力する
  6. 「値が偽の場合」に空白を意味する「“”」を入力する
  7. 「OK」をクリックする

Excelで31日のない月末の表示・非表示が自動で変わる4

2月の月末では29と30の日にちセルにも上記と同じ数式を入力し、数式内の「31」をそれぞれ「29」「30」に書き換えます。
月の数字が入ったセルをクリックして、リストから小の月(にしむくさむらい=2,4,6,9,11)を選択して下さい。31日が自動で非表示になっているはずです。

条件付き書式で31日のない月末を自動で表示・非表示する方法

条件付き書式を使う場合は、月間スケジュール表の日にちの数字が入るセルには「=DATE($A$1,$A$2,ROW(A1))」という数式を入れ、日にちの数字はROW関数で行番号から取得しています。

この数式を31日までオートフィルコピーすると、小の月の31日のセル「A33」には翌月初日の「1」が表示され、日付データの月が変わっています。

Excelで31日のない月末の表示・非表示が自動で変わる5

(※スケジュール表では、表示形式「d」で日にちだけ表示しています)

MONTH関数に「A33」セルを指定して月の数字だけを取得し、その数字が「A2」セルの月の数字と違っていたら」という数式「=MONTH($A$33)<>$A$2」を条件にして書式を設定します。

  1. 31日の行全体を選択する
  2. 「ホーム」タブの「条件付き書式」をクリックする
  3. プルダウンメニューの「新しいルール」をクリックする
  4. Excelで31日のない月末の表示・非表示が自動で変わる6

  5. 開いたダイアログで「数式を使用して書式設定するセルを決定」をクリックする
  6. 「次の数式を満たす場合に値を書式設定」のボックスに「=MONTH($A$33)<>$A$2」と入力
  7. 「書式」をクリックする
  8. Excelで31日のない月末の表示・非表示が自動で変わる7

  9. 「フォント」タブをクリックして「色」を白に設定
  10. 「塗りつぶし」タブをクリックして「色」を白に設定
  11. Excelで31日のない月末の表示・非表示が自動で変わる8

    書式の色の設定はスケジュール表の背景色に合わせて変えて下さい。

  12. ダイアログに戻り、「OK」をクリックする
  13. 31日のセルを含む行全体が非表示になる
  14. Excelで31日のない月末の表示・非表示が自動で変わる9

「書式」で「表示形式」➔「ユーザー定義」➔「種類」に「;;;」と入力しても、月末最終日を非表示にできます。
Excelで31日のない月末の表示・非表示が自動で変わる10
本記事で使ったExcelで作成する月間スケジュール表付き万年カレンダーの作り方はこちらから。
カレンダーやスケジュール表だけでなく、月末31日の表示・非表示をどう処理するかに突き当たる場面は多いと思います。今回は、関数だけで処理する方法と、条件付き書式を使う方法の2つをご紹介しました。Excel業務にお役立て下さい。
タイトルとURLをコピーしました