「Excelで最後の日付を求めたい」という質問がありました。「最後の日付」というと2種類の意味があり、どちらも確かに最後の日付を指すのです。
ひとつは、「その月やその年の最後の日付」のことを指しています。
もうひとつは、「売り上げた日付の中で最後に売り上げた日付」を指しているケースです。
どちらかによって、対処するケースが変わってきます。どちらを指しているのか、一度整理する必要がありますね。
今回はどちらのケースの質問にもお答えしていきたいと思います。
その月の最後の日付を求める
2022年10月20日に対する月末を求めるには、今月の場合の経過月数は0なので、次のような計算式になります。
=EOMONTH(“2022/10/20”,0)
その月の最後の日付、つまり「末日」を求めるのは「EOMONTH関数」です。End Of Month関数の略なのかと思われます。
EOMONTH関数の使い方は次のとおりです。
=EOMONTH(調べたい日付,経過月数)
今月の月初の日付を求める
2022年10月20日に対する月初の日を求めるには、次の計算式になります。
=EOMONTH(“2022/10/20”,-1)+1
応用して今月の月初である1日を求めるには、先月の月末の次の日と考えます。先月なので経過月数は-1で求め、その次の日なので最終的に+1します。
その年の最後の日付を求める
2022年10月20日に対する月末を求めるには、次のような計算式になります。
=EOMONTH(“2022/10/20”,12-MONTH(“2022/10/20”))
その年の最後の日付、つまり「おおみそか」を求めるのも「EOMONTH関数」です。EOYEAR関数はありません。少し工夫をして使います。
経過月数は、調べたい日付が12ヶ月のうち何ヶ月が経過されているかを求める必要があります。その月を表す数値はMONTH関数で求めるので12からMONTH関数の答えを引きます。
それをEOMONTH関数の経過月数にセットした計算式を作成します。
売り上げた日付の中で最後に売り上げた日付を求める
セルA2からA51までに売上日付が入力されていて、その中の最後の日付を求める数式は次のとおりです。
=MAX(A2:A51)
こちらは「MAX関数」を使います。
MAX関数の使い方は次のとおりです。
=MAX(日付の入力範囲)
さて、最大値を求めるMAX関数で最後の日付?と思うかもしれません。
Excelの日付を求める仕組みを理解するとわかりやすくなります。
日付シリアル値とは
Excelの日付は実はただの数字なのです。日付は1900年の1月1日から数えた日数で管理されているのです。1900年1月1日は1です。1900年1月31日は31です。逆に32という数字を日付の形式にすれば1900年2月1日と表示されるのです。だからTODAY関数に+1すれは明日の日付を求めることができるのです。
2022年10月20日は44854です。このようにただの数字なので足し算、引き算ができるほか、MAX関数で最終日、MIN関数で開始日を求めることができます。
売り上げた日付の中で最後に売り上げた日付を求める数式
セルA2からA51までに売上日付が入力されていて、セルB2からB51まで販売先が入力されていて、A社に売り上げた最後の日付を求める数式は次のとおりです。
=MAXIFS(A2:A51,B2:B51,”A社”)
この場合では販売先を条件とした最大値を求める「MAXIFS」関数を使います。
販売先ごとの最終日付を求めるMAXIFS関数の使い方は次のとおりです。
=MAXIFS(日付の入力範囲,販売先の入力範囲,抜き出す販売先)
上記のMAXIFS関数は販売先というひとつの条件で抜き出していますが、MAXIFS関数では複数の条件で抜き出すことができます。
=MAXIFS(最大値を求める範囲,ひとつめの条件範囲,ひとつめの条件範囲,ふたつめの条件範囲,ふたつめの条件・・・)
まとめ
今回は、「Excelで最後の日付を求めたい」という課題に対して回答をしました。
一見すると「EOMONTH関数」のことだろうなと判断し回答してしまうのですが、Excelの機能を幅広く見渡し、その質問をもう一度考えると、その回答ではないものを求めていることがわかるときがあります。人にExcelを教える時は、このようなことを先読みして回答を考えることも重要なのです。
また、質問をするときに「月末を求めたい」「入力されている中で最後の日付を知りたい」といった具体的な質問をすれば、最短で答えに辿り着けます。
質問者、回答者それぞれが答えにスマートに辿り着くためには、お互いのコミュニケーションが必要になります。
コメント