更新日:、 作成日:

エクセル INDEX と MATCH 関数を組み合わせて好きな列から検索する

はじめに

エクセルの INDEX と MATCH 関数を組み合わせる方法を紹介します。

INDEX 関数」と「MATCH 関数」を組み合わせて、好きな列や行から検索できます。

=INDEX(A1:A3,MATCH("エクセル",B1:B3, 0),1) のようにして、列「B」から エクセル を検索して見つかった行に対応する列「A」のセルを取得できます。

=INDEX(A1:C1,1,MATCH("エクセル",A2:C2, 0)) のようにして、行「2」から エクセル を検索して見つかった行に対応する行「1」のセルを取得できます。

行見出しと列見出しを検索して交差するセルを取得できます。

VLOOKUP 関数」は一番左の列だけ、「HLOOKUP 関数」は一番上の行しか検索できません。

好きな行や列から検索するには「XLOOKUP 関数」を使用します。

VLOOKUP 関数のように好きな列から検索する

INDEX 関数」の引数「行番号」に「MATCH 関数」を組み合わせて、好きな列から検索できます。「VLOOKUP 関数」は一番左の列しか検索できません。

365 または 2021 からは「XLOOKUP 関数」を使用します。
=INDEX(結果範囲, MATCH(検索値, 検索範囲, 0), 列番号)
6

それぞれの引数に何を指定するのかわかりやすく解説します。

例として名前を検索して No. を取得します。

引数「結果範囲」、どの値を取得しますか?

取得したい範囲と他の列を含む範囲を引数「結果範囲」に指定します。

=INDEX($B$3:$E$5

取得したい範囲 $B$3:$B$5 だけでも取得できますが、引数「列番号」を使用して他の列が取得できなくなります。

引数「検索値」、何を検索しますか?

名前を検索したいので、その検索する値を引数「検索値」に指定します。文字列を直接入力するなら "エクセル" のように "" で囲みます。

=INDEX($B$3:$E$5,MATCH(B8

引数「検索範囲」、どこから検索しますか?

名前を検索するなら、その列の範囲を引数「検索範囲」に指定します。引数「範囲」と行数を合わせる必要があります。

=INDEX($B$3:$E$5,MATCH(B8,$C$3:$C$5

バージョンを検索するなら $D$3:$D$5 を入力します。

引数「列番号」、どの値を取得しますか?

引数「範囲」の中で No. の列は何番目ですか?

一番左の No. の列を基準とした 1 からの連番です。名前の列は 2、バージョンの列は 3 になります。

=INDEX($B$3:$E$5,MATCH(B8,$C$3:$C$5),1)
=XLOOKUP(B9,$C$3:$C$5,$B$3:$B$5)

これで名前を検索して No. を取得できます。

6

バージョンを検索して名前を取得する

バージョンを検索して名前を取得します。「MATCH 関数」を使用して、検索して見つかった行番号を取得できます。

=INDEX($B$3:$E$5,MATCH(B8,$D$3:$D$5,0),2)
=XLOOKUP(B9,$D$3:$D$5,$C$3:$C$5)
7

HLOOKUP 関数のように好きな行から検索する

INDEX 関数」の引数「列番号」に「MATCH 関数」を組み合わせて、好きな行から検索できます。「HLOOKUP 関数」は一番上の行しか検索できません。

365 または 2021 からは「XLOOKUP 関数」を使用します。
=INDEX(結果範囲, 行番号, MATCH(検索値, 検索範囲, 0))
8

上記の「VLOOKUP 関数のように好きな列から検索する」の行と列を入れ替えたのと同じなので、引数の解説は省略します。

名前を検索して No. を取得する

名前を検索して No. を取得します。「MATCH 関数」を使用して、検索して見つかった列番号を取得できます。

=INDEX($C$2:$E$5,1,MATCH(B8,$C$3:$E$3,0))
=XLOOKUP(B9,$C$3:$E$3,$C$2:$E$2)
8

バージョンを検索して名前を取得する

バージョンを検索して名前を取得します。

=INDEX($C$2:$E$5,2,MATCH(B8,$C$4:$E$4,0))
=XLOOKUP(B9,$C$4:$E$4,$C$3:$E$3)
9

表の見出しを検索する

INDEX 関数」と「MATCH 関数」を組み合わせて、表の見出しを検索して交差するセルを取得できます。

365 または 2021 からは「XLOOKUP 関数」を使用します。
=INDEX(結果範囲, MATCH(行の検索値, 行の検索範囲, 0), MATCH(列の検索値, 列の検索範囲, 0))
11

基本は、上記の「VLOOKUP 関数のように好きな列から検索する」と「HLOOKUP 関数のように好きな列から検索する」と同じです。

行見出しと列見出しを検索する

行見出し エクセル と列見出し 365 を検索して交差するセルを取得します。

=INDEX(C3:E5,MATCH(B7,B3:B5,0),MATCH(C7,C2:E2,0))
=XLOOKUP(B7,B3:B5,XLOOKUP(C7,C2:E2,C3:E5))
10

MATCH 関数」から行見出しを検索して行番号を取得します。

MATCH 関数」から列見出しを検索して列番号を取得します。

それを「INDEX 関数」の引数「行番号」と引数「列番号」に指定して、引数「範囲」の中から交差するセルを取得します。