最高点の人の名前は、=INDEX(A2:A7,MATCH(MAX(B2:B7),B2:B7,0)) で取り出せます。MAX で一番高い点数を出し、MATCH でその点数が上から何番目かを調べ、INDEX で同じ行の名前を返します。
この記事では、名前と点数の表を例に、最大値のとなりのセル(名前)を取り出す式、XLOOKUP を使う式、最小値の名前、同点の人がいるときの結果を、実際の Excel で確かめた結果で説明します。
最大値の名前を取り出す式
=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))

結果は「高橋」でした。一番高い 95 点は上から 4 番目にあるので、名前の列の 4 番目が返っています。
2. XLOOKUP と MAX で取り出す
XLOOKUP が使える Excel(Microsoft 365・Excel 2021 以降)なら、もっと短く書けます。「最大値を点数の列から探して、名前の列を返す」という順番です。
=XLOOKUP(MAX(B2:B7),B2:B7,A2:A7)

結果は「高橋」で、1 の式と同じでした。XLOOKUP の使い方は XLOOKUP関数の使い方で説明しています。
3. 最低点(最小値)の人の名前を取り出す
MAX を MIN に変えると、一番低い点数の人の名前になります。
=INDEX(A2:A7,MATCH(MIN(B2:B7),B2:B7,0))

結果は「渡辺」でした(58 点)。2 番目・3 番目に高い人を出したいときは、MAX の代わりに LARGE 関数を使います(LARGE関数の使い方)。
4. 「最高点は○○さんの△点」と表示する
名前と点数を & でつなぐと、1 つのセルに文章で表示できます。
="最高点は "&INDEX(A2:A7,MATCH(MAX(B2:B7),B2:B7,0))&" さんの "&MAX(B2:B7)&" 点"

結果は「最高点は 高橋 さんの 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関数の使い方で説明しています。順位そのものを付ける方法は 順位を付ける方法をどうぞ。
