スプレッドシートロゴ

VLOOKUPの代りにINDEXとMATCHを使う

こんにちは。

TECH BLOGの萱場です。

今回は、表題の通りVLOOKUP関数の代りに、INDEX関数とMATCH関数を使用する解説を行いたいと思います。

VLOOKUPの弱点

VLOOKUP関数を使用されている方は、ご存知かもしれませんが、VLOOKUP関数の弱点は、【検索キーより右側の値しか抽出できない】ことです。

上記の表の場合、VLOOKUPでは、品番列から、サイズや色、価格の値を取ることはできますが、商品IDから、サイズや色、価格を取ることはできません。

XLOOKUP

元も子もない話ですが、最新のエクセルやスプシでは、XLOOKUPという関数を使って、上記の表の商品IDを検索キーにサイズなどの検索キーより右側の値を取ることができます。

XLOOKUP(検索キー, 検索範囲, 結果の範囲, 見つからない場合の値, 一致モード, 検索モード)

https://support.google.com/docs/answer/12405947?hl=ja#zippy=

解説

例えばI3に商品IDの単価を持ってきたいとき、以下の様に指定すると単価が取れます。

XLOOKUP(H3,$F$3:$F$5,$E$3:$E$5,”一致なし”,0)

最初の引数で、検索する商品IDを指定します。

次の引数では、その商品IDを検索する範囲を一次配列で指定します。

3番目の引数で、マッチした場合に取りたい値の範囲を選択します。(今回の場合は価格の範囲)

4番目の引数は、検索に一致しない場合に出力する文字列を、設定します。

5番目の引数は、一致モードです。完全一致の場合は0を使用します。(省略可)

今回は、すでに省略してしまっていますが、6番目の検索方法があります。

それは、検索モードの設定で、線形探索と二分探索を選ぶことができます。(デフォルトは、上から順に線形探索です。二分探索の場合は、昇順、降順に並び替えたうえで関数を使用する必要があります)

値を取ることができました。

XLOOKUP関数の便利なところは、右から左に検索できることもそうですが、VLOOKUP関数のときに不便だった指数の指定が必要ありません。

検索結果で使いたい範囲を直接指定するので、わかりやすいですね。

INDEX & MATCH関数

XLOOKUP関数が使える状況では、このINDEX&MATCH関数を使用する必要性はありませんが、古いエクセルなどだと、使えない場合があり、そんなときでも使用できるのが、今回の組み合わせ関数です。

INDEX関数

INDEX(参照, [行], [列])

https://support.google.com/docs/answer/3098242?hl=ja&sjid=1053379139656346441-AP

インデックス関数は、指定範囲の中から、第一引数(行)、第二引数(列)に該当する値を返すというものです。

公式ドキュメントを見てもらうとよりわかりやすいと思います。

MATCH関数

MATCH(検索キー, 範囲, 検索の種類)

https://support.google.com/docs/answer/3093378?hl=ja&sjid=1053379139656346441-AP

第二引き数の検索範囲より、第一引数の検索キーがある相対的な位置を返します。

検索の種類は、0が完全一致になります。

INDEX関数とMATCH関数を合体させると、、、

流れから考えると、

  1. INDEX関数の参照範囲に、値を取りたい範囲を指定する(今回の場合は、価格の部分)
  2. INDEX関数の第二引数(行)に、MATCH関数を入力する。
  3. MATCH関数の第1引数に、価格を知りたい商品の商品IDを指定する。第2引数の範囲に表の商品IDの範囲を指定する。

今回の場合、商品ID【100001】からその商品の価格を知りたいとします。そうすると

  1. MATCH関数では、100001の商品IDの相対的な位置を取得。→商品IDの一番上にあるので“1”が返ってくる。
  2. INDEX関数では、E3からE5までの範囲を参照範囲として指定しているので、その中の1行目の”1000″という値が返ってくる。

こんな感じです。

まとめ

最後まで、お読みいただきありがとうございました。

INDEX関数は、XLOOKUPの代わり以外にもクロス集計をしたりする際に使用できます。

慣れた関数を使っているともっと便利な関数があっても、古い関数を使ったままになり、解決方法や思考の枠が狭まってしまうこともあるので、注意が必要ですね。

株式会社デザインXでは、アパレル業界のお客様に向けて、ECサイトや業務基幹システム(ERP)の開発・導入支援を行っております。ご興味をお持ちの方は、是非下記リンクよりお気軽にお問い合わせください。


投稿日

カテゴリー:

投稿者:

タグ: