search
LoginSignup
2

More than 1 year has passed since last update.

posted at

updated at

Organization

VLOOKUPの上位互換【INDEX & MATCH】

お客様とのデータのやりとりでExcelファイルを使用することがありますが
データを加工する際にVLOOKUPが使用できない場面が多々あります。
VLOOKUPの代わりにINDEXとMATCH関数の組み合わせが便利なので紹介します。

◆VLOOKUP関数は検索範囲の左側に検索値がないと検索できない

シートA(商品一覧)
A B C
商品名 単価 商品コード
りんご 120 A001
みかん 80 A002
もも 150 A003
シートB(出荷一覧)
A B C D
出荷先 商品コード 個数 売上金額
〇〇商店 A003 300
△△商店 A002 500
◇◇商店 A003 200

◆シートBのD列に売上金額を計上するには?

シートBのB列(商品コード)を検索値として
シートAのB列(単価)を参照したいところですが
検索値である商品コードは検索範囲の一番右側に表示されています。
この場合VLOOKUP関数では検索することができません。

因数 = VLOOKUP(検索値,範囲,列番号,検索型)
検索値 検索する値を指定。全角と半角の区別はされるが、大文字と小文字の区別はされない
範囲 検索したいセル範囲
列番号 範囲の先頭の列から数えた列数を指定
列番号 範囲の先頭の列から数えた列数を指定

◆代わりに使えるのがINDEXとMATCHの関数の組み合わせ

INDEXとMATCHの組み合わせであればVLOOKUP関数ではできなかった
左端に検索値がない範囲からの検索が可能になります。
実際に求める値の範囲と、検索する値の範囲を絶対参照にしておくことを忘れないでください。

因数 =INDEX(配列,行番号,列番号)
配列 値を求めたい範囲を配列定数で指定
行番号 【配列】のなかで何行目に当たるかを指定
列番号 【配列】のなかで何列目に当たるかを指定
因数 =MATCH(検査値, 検査範囲, 照合の種類)
配列 検索する値を指定
行番号 【検査値】を検索する範囲を指定
列番号 1または省略・・・【検査値】以下の最大値を検索。0・・・【検査値】に一致する値のみを検索。-1・・・【検査値】以上の最小値を検索
=INDEX(シートA!$B$1:$B$3,MATCH($B3,シートA!$C$1:$C$3))
=INDEX(実際に求める値の範囲,MATCH(検索値,検索する値の範囲,0))

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
What you can do with signing up
2