こんにちは、さち です。
エクセル(Excel)で表を使っていると
検索対象の列が1列目にないという理由で
「VLOOKUP」関数 で値を求められないことがあります。
そんな場合でも
「INDEX」関数 と 「MATCH」関数 を使えば大丈夫ですよ!
検索する値が、表の「1列目」にある場合
- 例えば、こんな表を作ってみました。
ゲームを1回するのに必要な「スタミナ」と、それで得られる「経験値」です。 - スタミナを「15」使う場合、経験値はどれだけ得られるでしょうか。
関数を使って求めてみましょう。 - 使用するのは「VLOOKUP」関数ですね。
「=VLOOKUP(B3,B6:C9,2,FALSE)」と入力します。 - 関数「VLOOKUP」を使って経験値「46」が求められました。
検索する値が、表の「1列目」にない場合
検索する値が表の1列目にない場合
「VLOOKUP」関数では上手くいきません。
一致する値の検索は必ず1列目で行われるからです。
- 例えば、前項とは逆に
「経験値」を「46」得るには、スタミナはどれだけ必要かを求めましょう。
この場合、検索対象の「経験値」は表の2列目にあるため VLOOKUP 関数が使えません。 - こういう時は、「INDEX」関数 と 「MATCH」関数 を使います。
「=INDEX(B6:B9,MATCH(B3,C6:C9,0),1)」と入力。 - 「INDEX」関数 と 「MATCH」関数 を使って、スタミナ「15」が求められました。
基本的には、下記のような形になります。
= INDEX( 欲しい値がある列, MATCH( 検索する値, 検索する列, 0 ), 1 )
「INDEX」,「MATCH」関数を使った検索の解説
やり方さえ分かればいいという人は前項の内容だけで十分です。
仕組みを理解したいという人だけ読んで下さい。
まずは、「INDEX」関数の意味を再確認。
= INDEX( 検索範囲, 行数, 列数 )
「検索範囲」の左上を開始位置として「行数」「列数」を指定すると
その場所にあるセルの値を返します。
さらに、「MATCH」関数 の意味も再確認。
= MATCH( 検索する値, 検索する列, 近似検索の有無 )
「検索する値」を、「検索する列」から探し出し
その場所を「検索範囲」の一番上を開始位置として行数を返します。
(「検索する行」でも可。この場合一番左を開始位置として列数を返す)
近似検索の有無については、「0」と入力すれば完全一致する値のみを検索。
(「-1」「1」なら近似値を検索するが今回は解説省略)
つまり
MATCH関数で、検索する値が上から何行目にあるかを求め
INDEX関数で、行数と列数を指定して欲しい値を取り出しています。
使う関数と理屈を一度覚えてしまえば
次からはコピペを使わずに自力で入力できると思います。
仕組みが分かれば
同様に、1行目に検索対象がない場合の「HLOOKUP」関数も
「INDEX」関数 と 「MATCH」関数 で解決できますね。
【関連記事】
コメント