Vlookupで必ずエラーが出てしまう

教授?
ExcelでVlookup関数を使おうとしたのですが、どうしてもエラーが出てしまいます。

そうなんです?
どういう状態なんですか?

こんな感じです。
=VLOOKUP(D2,$A$2:$B$6,1,FALSE)
間違っていないはずなのに、エラーが出てしまいます。


ああ、なるほど。
Vlookupは範囲の中で検索値が入力されている列よりも左側を検索できませんよ?

はあ。
いまいち、分かりませんが?

このようにすればできるのでは?
=VLOOKUP(D2,$A$2:$B$6,2,FALSE)


そうなんですけどね。
どうしても、元の表をそのまま使いたいんですよ。
列を入れ替えたりするのは、間違いの元ではないですか?

ふむふむ。
まずは、Vlookupについて解説しておきましょう。
Vlookupの仕様について

Vlookupは、次のような仕様になっていますよ?
A列の検索値から見て、右側にあるデータを検索することができます。
つまり、検索値として使う数字や文字列は、左側にあることが必要なのです。


なんだか、ややこしいですね。
じゃあ、表を加工するしか方法がないということでしょうか?
必ず、検索値として使う数字や文字列を一番左のA列にしてしまうとか?

方法がないわけではありません。
INDEXとMATCH関数を使う

大きな表などで、加工するのが難しい場合は、INDEXとMATCH関数を使うと良いですよ?
=INDEX($A$2:$B$6,MATCH(D2,$B$2:$B$6,0),1)


だいぶ数式が長くなりましたね。
どうやって数式を入力すればいいですか?

まずは、INDEX関数から始めます。


「配列」と書いてある方を選択するのですね。

ええ、そうです。
次は、INDEX関数の引数を入れていきます。


「配列」は、数式を使いたい範囲ですね。
すると、「列番号」は配列の中での列番号ですね。
ここでは、A2セルからB6セルまでの範囲で、A列とB列の2列があります。
だから、教科を表示させたい時は、範囲の中の1列目なので「列番号」には、「1」と入力するのですね。

君にしては、なかなかの答えです。
それでは、「行番号」はどうでしょうか?

行番号には別の関数が入っているのですか?

そうです。
関数の引数の中に関数を入れること(関数を入れ子にすること)を「関数のネスト」と呼びますよ?


あ、ダイアログボックスが変わりましたね。

MATCH関数の引数は次のようにしますよ?


「検索値」は、Vlookupで言うところの「検索値」みたいな感じですかね。
「検査範囲」は、番号の入力されている範囲ですね。
「照合の種類」って何ですか?

「照合の種類」に関しては、Vlookupと同様に使うのであれば、「0」を入れると覚えておけば良いですよ。
検査値と完全一致したものを探すという意味になります。

なるほど!
これで、表を加工しなくても検索をすることができますね。
私もExcelマスターでしょうか?

君がどう思うかは自由ですが。
かんばっているのは認めますよ?