エクセル:VLOOKUP関数で検索できない表の対処法

この記事は約3分で読めます。
記事内に広告が含まれています

操作画面

こんにちは、さち です。

エクセル(Excel)で表を使っていると
検索対象の列が1列目にないという理由で
「VLOOKUP」関数 で値を求められないことがあります。

そんな場合でも
「INDEX」関数 と 「MATCH」関数 を使えば大丈夫ですよ!

スポンサーリンク

検索する値が、表の「1列目」にある場合

  1. 例えば、こんな表を作ってみました。
    ゲームを1回するのに必要な「スタミナ」と、それで得られる「経験値」です。
    操作画面
  2. スタミナを「15」使う場合、経験値はどれだけ得られるでしょうか。
    関数を使って求めてみましょう。
    操作画面
  3. 使用するのは「VLOOKUP」関数ですね。
    =VLOOKUP(B3,B6:C9,2,FALSE)」と入力します。
    操作画面
  4. 関数「VLOOKUP」を使って経験値「46」が求められました。
    操作画面

検索する値が、表の「1列目」にない場合

検索する値が表の1列目にない場合
「VLOOKUP」関数では上手くいきません。
一致する値の検索は必ず1列目で行われるからです。

  1. 例えば、前項とは逆に
    「経験値」を「46」得るには、スタミナはどれだけ必要かを求めましょう。
    この場合、検索対象の「経験値」は表の2列目にあるため VLOOKUP 関数が使えません。
    操作画面
  2. こういう時は、「INDEX」関数 と 「MATCH」関数 を使います。
    =INDEX(B6:B9,MATCH(B3,C6:C9,0),1)」と入力。
    操作画面
  3. 「INDEX」関数 と 「MATCH」関数 を使って、スタミナ「15」が求められました。
    操作画面

基本的には、下記のような形になります。

= INDEX( 欲しい値がある列, MATCH( 検索する値, 検索する列, 0 ), 1 )

「INDEX」,「MATCH」関数を使った検索の解説

やり方さえ分かればいいという人は前項の内容だけで十分です。
仕組みを理解したいという人だけ読んで下さい。

まずは、「INDEX」関数の意味を再確認。

= INDEX( 検索範囲, 行数, 列数 )

「検索範囲」の左上を開始位置として「行数」「列数」を指定すると
その場所にあるセルの値を返します。

さらに、「MATCH」関数 の意味も再確認。

= MATCH( 検索する値, 検索する列, 近似検索の有無 )

「検索する値」を、「検索する列」から探し出し
その場所を「検索範囲」の一番上を開始位置として行数を返します。
(「検索する行」でも可。この場合一番左を開始位置として列数を返す)

近似検索の有無については、「0」と入力すれば完全一致する値のみを検索。
(「-1」「1」なら近似値を検索するが今回は解説省略)

つまり
MATCH関数で、検索する値が上から何行目にあるかを求め
INDEX関数で、行数と列数を指定して欲しい値を取り出しています。

使う関数と理屈を一度覚えてしまえば
次からはコピペを使わずに自力で入力できると思います。

仕組みが分かれば
同様に、1行目に検索対象がない場合の「HLOOKUP」関数も
「INDEX」関数 と 「MATCH」関数 で解決できますね。

【関連記事】

   → エクセル(Excel)で知ってると便利なこと 目次

コメント

タイトルとURLをコピーしました