2/13/2021

Excel。曜日ごとの最新の最大値を算出するにはどうしたらいいの?【By day of the week】

Excel。曜日ごとの最新の最大値を算出するにはどうしたらいいの?

<TEXT関数・MAXIFS関数・XLOOKUP関数>

曜日別に最大値を算出したいとします。

しかも、最大値が同じ場合は、新しい日付を優先して算出させたいわけです。


次の表をつかって、今回は、Office365のExcelをつかって算出していきます。


この表の補足として、数式を使ってB列の曜日を算出しています。

B2の数式は、

=TEXT(A2,"aaa")

というように、TEXT関数をつかっています。

WEEKDAY関数でもいいのですが、TEXT関数の方が何かと便利ですし、楽です。


あと、算出する場所を確認しておきます。

E列の曜日は、「日」というように直接入力しております。


F列の最大値から先に算出していきます。

その後、最大値の数値が何日なのかを算出していきます。


日曜日の最大値を算出したいので、ここで使用する関数は、「MAXIFS関数」です。

MAXIFS関数は、条件付き最大値を算出することができる関数です。


F2に数式を設定していきます。

=MAXIFS(C2:C15,B2:B15,E2:E8)

数式を確定すると、オートフィルで数式をコピーしなくても、日曜日から土曜日までの最大値が算出されました。


これは、Excelに新しく加わった「スピル機能」をつかったことで、オートフィルで数式をコピーしなくても、算出してくれます。


あと、絶対参照の設定も不要です。


なお、スキル機能をつかわなくても、算出することはできます。


その場合の数式は、

=MAXIFS($C$2:$C$15,$B$2:$B$15,E2)

とすればOKです。


また、MAXIFS関数は、

MAXIFS(最大範囲,条件範囲1,条件1,…)

という引数をもっていて、複数条件にも対応しております。


まずは、最大値を算出することができました。

つづいて、日付を算出していきます。そして、直近の日付を優先したいわけです。


ここで、使用する関数は、「XLOOKUP関数」です。


VLOOKUP関数を使いたいところですが、範囲の右側(一番左側にない)なので、VLOOKUP関数では対応できません。


それでは、G2にXLOOKUP関数の数式を設定していきます。


XLOOKUP関数は、ダイアログボックスで設定するよりも、手入力するほうがいいかと思います。


またこのXLOOKUP関数は、先程紹介した「スピル機能」をつかうことができます。


なので、検索値は、F2のみを選択するのではなく、F2:F8までを範囲選択すると、「F2#」と表示がかわります。


検索範囲は、C2:C15。

スピル機能をつかいますので、絶対参照は不要です。


戻り範囲は、A2:A15。

日付を算出したいわけですから、戻り値は、日付ですね。


見つからない場合は、「””」(空白)とします。


一致モードは、完全一致ですので、「0」(ゼロ)を設定します。


検索モードは、「-1」(マイナス1)を設定します。

「-1」にすることで、末尾から先頭へ検索してくれます。

これは、最大値が同じ場合は、直近の日付にしたいので、「-1」とすれば、いいわけです。

ただし、日付を昇順にしておかないと意味がありませんので、注意が必要です。


確定して完成です。


G2の数式を確認しておきましょう。

=XLOOKUP(F2#,C2:C15,A2:A15,"",0,-1)


このような方法で、今回は、曜日別の最大値を算出してみました。