Excel(エクセル)でカレンダーやシフト表などの予定表を作成する際、年月に合わせて、日付と曜日を手入力で修正するのは大変です。
特に、2月など日数が少ない月の予定表から、29日、30日、31日分を削除するのは面倒です。
この記事では、エクセルの関数を利用して、年月をセルに入力すると、日付と曜日を自動で変更させる方法を紹介します。
日付と曜日の自動化の完成イメージを紹介
今回の記事で紹介する「日付と曜日の自動化」について、まずは完成イメージを紹介します。
今回は2つ表の作成の方法と手順を紹介します。
1つ目は、下の表のように、「年」と「月」を入力すると、その年月に合った日付と曜日を縦方向に自動で表示させる方法です。
2月は28日までが表示されるなど、入力した年月に合わせて自動で表示セルが調整される仕様です。
2つ目は、下の表のように、「年」と「月」を入力すると、その年月に合った日付と曜日を横方向に自動で表示させる方法です。
また、最後の見出しでは、「2024/4/1」と年月日を入力しても、上のような表を作成する関数のテクニックも紹介します。
日付と曜日の自動化に利用する関数
今回、日付と曜日の自動化するために、複数の関数を利用します。
利用する「IF関数」「DAY関数」「DATE関数」「ROW関数」「COLUMN関数」「TEXT関数」について、簡単に内容を紹介します。
自動化する方法を早く知りたい!という方は、さらに下の見出しまで読み飛ばしていただいて結構です。
IF関数:論理式に対して【真】か【偽】か判定
IF関数は、設定した論理式に対して【真】か【偽】かという判定をおこない、表示させる結果を変えることが出来る関数です。
IF関数の構文と引数は以下のようになっています。
=IF(論理式,[値が真の場合],[値が偽の場合])
例えば、下のテスト結果表の点数が80点以上か80点未満かによって【○】と【×】を表示させるためには、以下のようにIF関数を挿入します。
=IF(C3>=80,"〇","×")
👇使い方を詳しく知りたい方はどうぞ
DAY関数:日付のセルから「日」を取り出す
DAY関数は、日付の入力されたセルから「日」だけを取り出すことができる関数です。
使い方は簡単です。
日付の入力されたセルを、以下のように指定するだけです。
=DAY(B3)
DATE関数:日付を求める
エクセルのDATE関数は、日付を求めることができる関数です。
エクセルの日付は「シリアル値」という特殊な値で管理されています。
シリアル値は、1900年1月1日を「1」として、そこから日付が増えるごとにシリアル値も+1ずつ増えます。
DATE関数は、「年」「月」「日」のセルをそれぞれ引数として指定することで、シリアル値に置き直し日付として表示させることができます。
=DATE(年,月,日)
例えば、下の表のように、B列、C列、D列の数値セルを、DATE関数で指定することで、「2024/6/25」などの日付で表示させることができます。
=DATE(B3,C3,D3)
ROW関数:行番号を数値で表示
ROW関数は、指定したセルの行番号を数値で表示することが出来ます。
=ROW(セル番号)
例えば「=ROW(A3)」とすると、A3セルは3行目にあるので、ROW関数の値は「3」となります。
非常にシンプルな関数です。
この関数の面白いところは、ROW関数の引数は設定せずに、「=ROW()」とすると、ROW関数を挿入したセルの行番号が表示されます。
=ROW()
COLUMN関数:列番号を数値で表示
COLUMN関数は、指定したセルの列番号を数値で表示することが出来ます。
=COLUMN(セル番号)
例えば「=COLUMN(C4)」とすると、C4セルはA列から数えて3列目にあるので、COLUMN関数の値は「3」となります。
ROW関数と同様、COLUMN関数の引数を設定せずに、「=COLUMN()」とすると、COLUMN関数を挿入したセルの列番号が数値で表示されます。
=COLUMN()
TEXT関数:表示形式を変更する関数
TEXT関数は、セルの表示を「曜日」などの表示形式に変換する関数です。
=TEXT(セル番号,表示形式)
引数「表示形式」に、「”aaa”」や「”(aaa) ”」や「”aaaa”」と指定することで、「月」「(月)」「月曜日」などと曜日を表示することが出来ます。
=TEXT(B3,"aaa")
日付と曜日を年月に合わせて自動で変更する方法(縦方向)
上記で紹介した関数を使って、年月の入力に合わせて、日付と曜日を自動で変更する方法を紹介します。
まずは、日付と曜日を縦方向に表示する方法を紹介します。
関数はすごく長くなるけど、指定するセルは2つだけなので、焦らず作成してみてね。
縦方向/手順1.年月をセルに入力
まずは、セルに「年」と「月」を入力します。
縦方向/手順2.IF関数を挿入
次に、日付を入力する先頭のセルに、IF関数を挿入します。
=IF(
縦方向/手順3.IF関数の第1引数を挿入(論理式にDAY関数)
次に、IF関数の第1引数「論理式」を作成していきます。
手順2に続いて、以下の緑下線部の数式を入力します。
ROW関数の直後に引く数字は、数式の入力セルの行番号(下の場合は”5”行目)から1を引いた数値(下の場合は”4”)を入力してください。
=IF(DAY(DATE($B$2,$D$2,ROW()-4))
指定したセル番号は必ず$マークを付けて絶対参照にしてください。
上の例では、B2セルは「2024」、D2セルは「4」、「ROW()-4」の結果は「1」となるので、「DATE($B$2,$D$2,ROW()-4」は、「2024/4/1」という結果となります。
さらに、その数式をDAY関数で囲っているので、日付から日だけを取り出そうとしています。
縦方向/手順4.IF関数の第1引数を挿入(論理式の完成)
手順3の数式の後に、以下の緑下線部の数式「=ROW()-4,」を入力して、IF関数の論理式を完成させます。
IF関数の論理式で、手順3のDAY関数の結果が、セル番号から4引いた数値とイコールかどうかを判定しようとしています。
=IF(DAY(DATE($B$2,$D$2,ROW()-4))=ROW()-4,
縦方向/手順5.IF関数の第2引数を挿入
続いて、IF関数の第2引数「真の値の場合」を入力します。
手順4に続いて、手順3でも入力した「DATE($B$2,$D$2,ROW()-4)」を入力してください。
=IF(DAY(DATE($B$2,$D$2,ROW()-4))=ROW()-4,DATE($B$2,$D$2,ROW()-4),
論理式が当てはまる場合は、そのまま、DATE関数の結果のとおりの「日付」を表示させようとしています。
縦方向/手順6.IF関数の第3引数を挿入
最後にIF関数の第3引数「値が偽の場合」を入力します。
手順5の数式に続き、「””)」と入力してください。
=IF(DAY(DATE($B$2,$D$2,ROW()-4))=ROW()-4,DATE($B$2,$D$2,ROW()-4),"")
論理式が当てはまらない場合は、セルの表示が空白となるように指定しています。
縦方向/手順7.完成したIF関数を下のセルにコピペ
IF関数を確定させると、B2セルとD2セルに入力した年月に合った月初の日が表示されることを確認します。
次に、IF関数をコピペして、下のセルに31日分コピペします。
4月30日が表示されたセルの下のセルにも関数は挿入していますが、IF関数の論理式に一致しないので、4月31日とは表示されません。
縦方向/手順8.TEXT関数で日付を入力
最後に、日付の右横のC列に曜日を入力するため、以下のTEXT関数を挿入し、下のセルにコピペします。
日付を「(月)」と表示させたい場合は、”aaa”を”(aaa)”と入力してください。
=TEXT(B5,"aaa")
以上で日付と曜日の自動化の作業は終了です。
試しに年月を変更することで、日付と曜日も自動で変更されることが確認できれば無事完了です。
日付と曜日を年月に合わせて自動で変更する方法(横方向)
今度は、年月の入力に合わせて、横方向に日付と曜日を自動で変更する方法を紹介します。
今度はROW関数ではなく、COLUMN関数が活躍するよ。
横方向/手順1.年月をセルに入力
まずは、セルに「年」と「月」を入力します。
横方向/手順2.IF関数を挿入
次に、日付を入力する先頭のセルに、IF関数を挿入します。
=IF(
横方向/手順3.IF関数の第1引数を挿入(論理式にDAY関数)
次に、IF関数の第1引数「論理式」を作成していきます。
手順2に続いて、以下の緑下線部の数式を入力します。
COLUMN関数の直後に引く数字は、数式の入力セルの列番号(下の場合は”2”列目)から1を引いた数値(下の場合は”1”)を入力してください。
=IF(DAY(DATE($B$2,$D$2,COLUMN()-1))
指定したセル番号は必ず$マークを付けて絶対参照にしてください。
上の例では、B2セルは「2024」、D2セルは「4」、「COLUMN()-1」の結果は「1」となるので、「DATE($B$2,$D$2,COLUMN()-1」は、「2024/4/1」という結果となります。
さらに、その数式をDAY関数で囲っているので、日付から日だけを取り出そうとしています。
横方向/手順4.IF関数の第1引数を挿入(論理式の完成)
手順3の数式の後に、以下の緑下線部の数式「=COLUMN()-1,」を入力して、IF関数の論理式を完成させます。
IF関数の論理式で、手順3のDAY関数の結果が、セル番号から1引いた数値とイコールかどうかを判定しようとしています。
=IF(DAY(DATE($B$2,$D$2,COLUMN()-1))=COLUMN()-1,
横方向/手順5.IF関数の第2引数を挿入
続いて、IF関数の第2引数「真の値の場合」を入力します。
手順4に続いて、手順3でも入力した「DATE($B$2,$D$2,COLUMN()-1)」を入力してください。
=IF(DAY(DATE($B$2,$D$2,COLUMN()-1))=COLUMN()-1,DATE($B$2,$D$2,COLUMN()-1),
論理式が当てはまる場合は、そのまま、DATE関数の結果のとおりの「日付」を表示させようとしています。
横方向/手順6.IF関数の第3引数を挿入
最後にIF関数の第3引数「値が偽の場合」を入力します。
手順5の数式に続き、「””)」と入力してください。
=IF(DAY(DATE($B$2,$D$2,COLUMN()-1))=COLUMN()-1,DATE($B$2,$D$2,COLUMN()-1),"")
論理式が当てはまらない場合は、セルの表示が空白となるように指定しています。
横方向/手順7.完成したIF関数を右のセルにコピペ
IF関数を確定させると、B2セルとD2セルに入力した年月に合った月初の日が表示されることを確認します。
次に、IF関数をコピペして、右方向のセルに31日分コピペします。
4月30日が表示されたセルの右のセルにも関数は挿入していますが、IF関数の論理式に一致しないので、4月31日とは表示されません。
横方向/手順8.TEXT関数で日付を入力
最後に、日付の下の5行目に曜日を入力するため、以下のTEXT関数を挿入し、右方向のセルにコピペします。
日付を「(月)」と表示させたい場合は、”aaa”を”(aaa)”と入力してください。
=TEXT(B4,"aaa")
以上で日付と曜日の自動化の作業は終了です。
試しに年月を変更することで、日付と曜日も自動で変更されることが確認できれば無事完了です。
年月日を年と月に分ける方法
「年」と「月」を別々のセルに入力しなくても、「年月日」を入力することで、日付と曜日を自動化することも可能です。
以下のように、日付から「年」を取り出すYEAR関数と、日付から「月」を取り出すMONTH関数を利用します。
=YEAR(B2)
=MONTH(B2)
下の例のように、「年」と「月」を取り出したD2セルとE2セルを利用して、上記で紹介したIF関数を用いることで、日付と曜日の自動化が可能です。
月日の表示を「4/1」や「1日」「4-1」などに変更する方法
日付を「4月1日」ではなく、「4/1」や「1日」「4-1」などと表示することも可能です。
右クリックメニューの「セルの書式設定」から、「表示形式」タブで表示のユーザー定義を設定すると、以下のように、表示を変更できます。
セルの表示形式を変更したい方は、以下の記事を参考にしてください。