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)
このような方法で、今回は、曜日別の最大値を算出してみました。