"Diary" インターネットさんへの恩返し

いつもソースコードコピペばかりなので,みなさまへ少しばかりの恩返しを

【簡単】vlookup 複数条件は不可 でもすぐにできる代替手段!(MATCH関数・INDEX関数を使う)



スポンサーリンク

vlookupは大変簡単にテーブル間の照合ができますが、残念ながら比較対象の値は1つのみに限られています。

例を挙げると、顧客名簿にある、苗字が「鈴木」で名前が「太郎」の住所を出したいといった複数条件での情報出力ができません。

SQL文でいう "WHERE カラム1 = 条件1文字列 AND カラム2 = 条件2文字列" のような事ができないという感じです。

その為、MATCH関数とINDEX関数を使ってひょうひょい!とできる方法をご紹介。

[完成イメージ]
f:id:azumami:20151128005528p:plain

上で使用する関数は最後に書いていますが、簡単にINDEX関数と、MATCH関数の基本的な説明です。

MATCH関数

  • 特定の値を検索し検査範囲内での相対的な位置を返す。
  • 位置は検査範囲で指定した範囲内の最も左上に位置するセルが1となります。
  • 照合の型で0を指定し検査範囲に、指定値が含まれない場合、エラー値#N/Aが返す。
=MATCH(検索値,検索範囲,0)


f:id:azumami:20151128002021p:plain

INDEX関数

  • 範囲の中から、相対的な行位置と列位置を指定して値を取り出す
=INDEX(範囲,行番号,列番号)


f:id:azumami:20151128002214p:plain

vlookupの機能を実現(INDEX関数+MATCH関数)

=INDEX(データの範囲,MATCH(検索値,検索範囲,0),抽出対象の相対的な列番号)

f:id:azumami:20151128002520p:plain

複数キーワード指定で抽出する

範囲1内で検索文字1があり、範囲2で検索文字2がある相対的な行番号を返す

=INDEX(範囲全体,MATCH(1,(検索範囲1=検索範囲1で検索したい値)*(検索範囲2=検索範囲2で検索したい値),0),範囲全体で出力したい相対的な列番号)

#数式を入力後(編集状態で(F2)で CNTRL + SHIFT + ENTER を押す必要あり)
f:id:azumami:20151128005528p:plain