ultzero
Keyboard

【Excel】VLOOKUP関数の代わりにINDEX関数とMATCH関数を使った検索方法

Excel を使ってさまざまな記録や管理資料を作成することがあります。これらの資料は作成だけではなく、検索をして必要な情報を得ることで活用していると思います。検索方法のひとつとしてVLOOKUP 関数を使っていると思います。VLOOKUP 関数は便利ですが、VLOOKUP 関数を使えない場合があります。そんな時に INDEX 関数と MATCH 関数を使った方法をお勧めします。

VLOOKUP 関数を使えなくて困るとき

ここで VLOOKUP 関数の書式を確認しましょう。

=VLOOKUP(検索値,範囲,列番号,検索方法)

VLOOKUP 関数は、指定した範囲の一番左の列を対象に検索値で検索を行います。

そして、検索した結果となる行で、範囲の中にある列を列番号で指定して値を参照することができます。

次のような検索は、VLOOKUP 関数を使用できないか、工夫をしなければできません。

・範囲の左側の列に、検索した結果、参照したい値がある。

・VLOOKUP 関数を使うために、資料を編集するわけにはいかない。

このように、資料は VLOOKUP 関数にとって都合の良い構成になっているとは限りません。

仮に、VLOOKUP 関数を使うために、列の構成を変更することができたとしても、工数が掛かってくたびれますし、何よりミスが発生する可能性があります。

是非このような作業は避けたいものです。

INDEX 関数と MATCH 関数を使います

VLOOKUP 関数の代わりに、INDEX 関数と MATCH 関数を使用します。

ここで INDEX 関数と MATCH 関数の書式を確認します。

=INDEX(index,”list”[,[delimiter][,[errorvalue]]])
index:  検索する位置を指定します。
list:  検索するリストを指定します。
delimiter:  list 内の区切り文字として使用する文字列を指定します。delimiter 文字列には、複数の文字を使用できます。またマルチバイト文字も使用できます。既定値はセミコロンです。
errorvalue:  インデックスが範囲外の場合に返す、ユーザー指定の値です。既定では、空の文字列です。

=MATCH(検査値, 検査範囲, [照合の型])

書式を見ただけでは、この二つの関数はどのように使えば良いのか大変分かりにくいです。

INDEX 関数と MATCH 関数の使用例

サンプルを使って説明します。

このサンプルは、架空の資料で、複数のコンピュータを管理するための資料です。

この種の管理資料は、資産としての管理と、資源としての管理が混在していることがあります。

このサンプルは、まさにその例となります。

fig_excel_index_match_1

さて、この資料から、コンピュータに付けられた名前 “ホスト名”(コンピュータ名) をキーに検索してみます。

対象となるコンピュータのパワー不足を確認したり、修理目的で製造番号が必要だったとします。

検索結果、参照したい列は、キーとなる列 “ホスト名” よりも左側にあります。

VLOOKUP 関数では検索できませんので、INDEX 関数とMATCH 関数を使います。

ワークシート “検索ツール” に数式を定義して検索を行います。

検索範囲は次の通りとします。

 $デバイス管理表.A2:J10

ワークシート “検索ツール” の列 B2 には、次の数式を定義します。

=INDEX($デバイス管理表.A2:J10,MATCH(A2,$デバイス管理表.H2:H10,0),6)

ワークシート “検索ツール” の列 C2 には、次の数式を定義します。

=INDEX($デバイス管理表.A2:J10,MATCH(A2,$デバイス管理表.H2:H10,0),3)

結果は次の通りです。

fig_excel_index_match_2

INDEX 関数と MATCH 関数を組み合わせることによって、さらに複雑な検索ができます。

資料によって、VLOOKUP 関数と使い分けると良いでしょう。

関連キーワード

アクセスランキング

おすすめ記事

カテゴリ一覧