エクセルで最大値の名前を表示する方法|一番高い点数の人をINDEX・MATCH・MAXで取り出す【実機で解説】

エクセルで最大値の名前を表示する方法|一番高い点数の人をINDEX・MATCH・MAXで取り出す【実機で解説】

最高点の人の名前は、=INDEX(A2:A7,MATCH(MAX(B2:B7),B2:B7,0)) で取り出せます。MAX で一番高い点数を出し、MATCH でその点数が上から何番目かを調べ、INDEX で同じ行の名前を返します。

この記事では、名前と点数の表を例に、最大値のとなりのセル(名前)を取り出す式、XLOOKUP を使う式、最小値の名前、同点の人がいるときの結果を、実際の Excel で確かめた結果で説明します。

練習用Excelファイル(無料ダウンロード)
名前と点数の表と、この記事の最大値の名前を取り出す式をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り
目次

最大値の名前を取り出す式

=INDEX(名前の列, MATCH(MAX(点数の列), 点数の列, 0))
部品意味
MAX(点数の列)点数の列の中で一番大きい値
MATCH(…, 点数の列, 0)その値が点数の列の上から何番目にあるか。最後の 0 は「ぴったり同じ値を探す」の意味
INDEX(名前の列, …)名前の列の、その番目のセルを返す

名前の列と点数の列は、同じ行数(ここでは 2〜7 行目)にそろえます。名前が点数の右にあっても左にあっても、同じ式で取り出せます。INDEX と MATCH の組み合わせは INDEXとMATCHの使い方で説明しています。

1. 最高点の人の名前を取り出す(INDEX+MATCH+MAX)

点数(B2:B7)の最大値を探し、同じ行の名前(A2:A7)を返します。どのバージョンの Excel でも使える式です。

=INDEX(A2:A7,MATCH(MAX(B2:B7),B2:B7,0))
エクセルでINDEX関数とMATCH関数とMAX関数を組み合わせて最高点の人の名前を取り出した画面
エクセルでINDEX関数とMATCH関数とMAX関数を組み合わせて最高点の人の名前を取り出した画面

結果は「高橋」でした。一番高い 95 点は上から 4 番目にあるので、名前の列の 4 番目が返っています。

2. XLOOKUP と MAX で取り出す

XLOOKUP が使える Excel(Microsoft 365・Excel 2021 以降)なら、もっと短く書けます。「最大値を点数の列から探して、名前の列を返す」という順番です。

=XLOOKUP(MAX(B2:B7),B2:B7,A2:A7)
エクセルでXLOOKUP関数とMAX関数を組み合わせて最高点の人の名前を取り出した画面
エクセルでXLOOKUP関数とMAX関数を組み合わせて最高点の人の名前を取り出した画面

結果は「高橋」で、1 の式と同じでした。XLOOKUP の使い方は XLOOKUP関数の使い方で説明しています。

3. 最低点(最小値)の人の名前を取り出す

MAX を MIN に変えると、一番低い点数の人の名前になります。

=INDEX(A2:A7,MATCH(MIN(B2:B7),B2:B7,0))
エクセルでINDEX関数とMATCH関数とMIN関数を組み合わせて最低点の人の名前を取り出した画面
エクセルでINDEX関数とMATCH関数とMIN関数を組み合わせて最低点の人の名前を取り出した画面

結果は「渡辺」でした(58 点)。2 番目・3 番目に高い人を出したいときは、MAX の代わりに LARGE 関数を使います(LARGE関数の使い方)。

4. 「最高点は○○さんの△点」と表示する

名前と点数を & でつなぐと、1 つのセルに文章で表示できます。

="最高点は "&INDEX(A2:A7,MATCH(MAX(B2:B7),B2:B7,0))&" さんの "&MAX(B2:B7)&" 点"
エクセルで最高点の人の名前と点数を&でつないで1つのセルに文章で表示した画面
エクセルで最高点の人の名前と点数を&でつないで1つのセルに文章で表示した画面

結果は「最高点は 高橋 さんの 95 点」でした。表の点数を書きかえると、名前も点数も自動で変わります。

【実機で検証】最大値の名前の取り出しでつまずくところ

エクセルで最大値の名前を取り出す式に同点の人や文字の数字があるときの結果を確かめた画面
エクセルで最大値の名前を取り出す式に同点の人や文字の数字があるときの結果を確かめた画面
ためしたこと式結果
同点が 2 人(佐藤・鈴木が 95)のとき INDEX+MATCH=INDEX(A12:A16,MATCH(MAX(B12:B16),B12:B16,0))佐藤
同点が 2 人のとき XLOOKUP=XLOOKUP(MAX(B12:B16),B12:B16,A12:A16)佐藤
FILTER で最高点の全員を出す=TEXTJOIN("・",TRUE,FILTER(A12:A16,B12:B16=MAX(B12:B16)))佐藤・鈴木
最高点の人数を数える=COUNTIF(B12:B16,MAX(B12:B16))2
文字の「100」がある列の MAX=MAX(B12:B16)95
MATCH の最後の 0 を省く(上の表)=INDEX(最高点の名前!A2:A7,MATCH(MAX(最高点の名前!B2:B7),最高点の名前!B2:B7))渡辺

同点の人が 2 人いるとき、INDEX+MATCH は「佐藤」、XLOOKUP も「佐藤」で、上にある 1 人だけが返りました。下の「鈴木」は出ません。

全員を出したいときは、FILTER 関数(Microsoft 365・Excel 2021 以降)で =FILTER(名前の列,点数の列=MAX(点数の列)) と書きます。TEXTJOIN で 1 つのセルにつなぐと「佐藤・鈴木」になりました。最高点の人数は COUNTIF で 2 人と数えられます。

点数が文字として入っている「100」は、MAX の対象になりませんでした(結果は 95)。一番高いはずの人が出ないときは、点数が文字になっていないか確かめます。MATCH の最後の 0 を省いた式は「渡辺」でした。0 を省くと「並べ替えてある表」用の探し方になるので、かならず 0 を付けます。

よくある質問

最大値のとなりのセル(左の列)も取り出せますか?

はい。INDEX の 1 つ目に取り出したい列を指定するだけなので、点数の左でも右でも取り出せます。左の列を取り出す例は INDEXとMATCHの使い方で説明しています。

クラス別など、条件に合う中での最高点を出したいときは?

条件付きの最大値は MAXIFS 関数で出せます。MAXIFS関数の使い方で説明しています。

上位 3 人の名前を順に出したいときは?

LARGE 関数で 1〜3 番目の点数を出し、同じ INDEX+MATCH で名前を取り出します。LARGE関数の使い方で説明しています。順位そのものを付ける方法は 順位を付ける方法をどうぞ。

練習用Excelファイル(無料ダウンロード)
この記事の例をまとめた練習ファイルです。
Excelファイル(.xlsx)/登録不要/数式・練習データ入り

あわせて読みたい:関連記事

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

目次