12/25/2018

Excel。最高値を検索できても、その行にある他のデータを抽出するには?【MAX】

Excel。最高値を検索できても、その行にある他のデータを抽出するには?

<MAX・OFFSET+MATCH関数>

データの中から、最大値や最小値などは、MAX関数やMIN関数を使うことで、簡単に抽出することができますが、では、その該当したデータのレコードはどうやったら、抽出することができるのでしょうか?

例えば、次の表。

C列の金額の中で最大値を算出するのはMAX関数を使うので、なんら問題はありませんが、では、その日付はいつなのか?

条件付き書式をつかって行(レコード)を塗りつぶすように設定してもいいのですが、ただ単に日付が知りたい場合どうしたらいいのか?というのが今回のテーマなのです。

まずは、F1にMAX関数を使って、最大値を算出してみます。

F1の数式は、
=MAX(C2:C16)
さて、474は、3月4日に発生しているのですが、どうやったらいいのでしょうか?

検索させるとしたら、最初に、474という最大値は、何行目にあるのか算出させる。

そして、474というセルの1つめの左側に日付のデータがあるということですよね。

なので、まず何行目にあるのか確認するにはどうしたらいいのでしょうか?
そこで登場するのが、MATCH関数です。

G1にMATCH関数の結果を表示してみましょう。
G1をクリックして、MATCH関数ダイアログボックスを表示します。

検索値には、最大値の結果が算出されている、F1
検索範囲は、金額なので、C2:C16
照合の種類ですが、完全一致なので”0(ゼロ)”。

ちなみに、”1”だと、以下。”-1”だと、以上となっています。

G1の数式は、
=MATCH(F1,C2:C16,0)

結果は、4と表示されました。4件目に該当するデータがあることが算出されたわけです。

その該当するセルの1つ左側のセルを見つけるために、今度は、OFFSET関数をつかうことで、算出することができます。

では、F2をクリックして、OFFSET関数ダイアログボックスを表示しましょう。

参照は、C1。見出しじゃないかと思うかもしれませんが、OFFSET関数は、参照である起点を0(ゼロ)としています。

つまり、データの先頭であるC2を参照(起点)として、4つ下方向のセルだと、C6を指してしまいますので、C1の見出し行を参照(起点)とする必要があります。

行数は、G1に先ほどMATCH関数で算出しましたので、G1を設定します。

列数は、1つ左側なので、-1(マイナス1)と設定して、OKボタンをクリックしましょう。

F2の数式は、
=OFFSET(C1,G1,-1)
算出結果が、シリアル値で表示されてきますので、表示形式を日付にするといいでしょう。

結果は、このようになりましたね。

このように、OFFSET関数とMATCH関数を合わせて使うことで、該当するセルの行(レコード)からデータを抽出することが可能になりますよ。

ちなみに、OFFSET関数とMATCH関数をネストにすると、
=OFFSET(C1,MATCH(F1,C2:C16,0),-1)

さらに、OFFSET関数とMATCH関数とMAX関数をネストすると、
=OFFSET(C1,MATCH(MAX(C2:C16),C2:C16,0),-1)

確かに、1つの数式で算出することができますが、理解するのに時間がかかりますので、実務では、ほどほどがいいように思えますね。