結論
悪いことは言わねぇから早くINDEX/MATCHに慣れろ!
以下解説
まず、VLOOKUPよりINDEX/MATCH関数を使用するメリットはこんな感じ。
1. 処理速度が速ええ。
2. 検索元テーブルのキーワードを一番左に置かなくてOK。
3. 検索用元データの更新が楽。(範囲ではなく、列指定できるためデータ行追加は自動更新される)
4. 複数条件指定可能。
はい、1だけで使用する価値ありますね。
例えば、以下のような店舗毎在庫数テーブルがあったとします。
店舗コード、商品コードに合わせて数量を抽出したい場合。
検索条件(F3列・G3列)にマッチするレコードを店舗毎在庫数テーブル(B列~D列)から抽出。
列番号3番目の数量項目を返します。
複数条件はこれでOK。
上画像のINDEX,MATBHを分解すると...
'検索値以外は列指定でOK
'検索値1を検索範囲1から探すよ~
'検索値2を検索範囲2から探すよ~
=INDEX(検索元テーブル, MATCH(検査値1&検査値2, 検査範囲1&検査範囲2, 照合種別 ), 検索元テーブルの返したい列番号 )
照合種別については以下。
照合種別 | 一言でいうと | 詳細 |
---|---|---|
0 | 完全一致 | 検索値に等しい最初の値を検索・検索範囲は任意【これ使っとけばOK】 |
1 | 以下 | 検索値以下の最大値を検索・検査範囲は昇順で配置する必要あり |
-1 | 以上 | 検索値以上の最小値を検索・検査範囲は降順で配置する必要あり |
あと、もちろん単一条件でも検索可能
=INDEX(検索元テーブル, MATCH(検査値1, 検査範囲1, 照合種別 ), 検索元テーブルの返したい列番号 )
最初は戸惑うかもしれませんが絶対慣れておいた方がいいね。
上記だと検索条件と一致しなければN/Aエラーが発生するから、ついでにIFERROR関数
を使えば完璧。
一致しない場合、任意の文字を入れられる。