スポンサーリンク

【Excel/関数】キーが範囲の左端になくVlookupが使えない場合 別解:MATCH関数とINDEX関数を使った場合

エクセル関数 エクセル
スポンサーリンク

前回、MATCH関数とINDIRECT関数を使ってキーが範囲の左端にない場合のVLOOKUPの代替関数を作ってみました。

INDEX関数でもできるようなのでやってみました。

関数はこうです。

検索したいキーがセルF2にあります。

1年4組の担任氏名をC列から持ってきてセルI2に表示したいです。

探す範囲のキー列は持ってきたいC列の一つ右隣のD列にあります。

セルI2に入力する関数は

=INDEX(C2:C6,MATCH(F2,D2:D6,0))

まず、MATCH関数で「1-4」を範囲D2:D6から探します。1-4は範囲内の3番目なので「3」が返ります。

で、MATCH関数は「3」に置き換わり

=INDEX(C2:C6,3)

となります。

INDEX関数は範囲C2:C6の3番目の値を返します。3番目の値は「中村花子」です。

図にすると、こんなかんじ。

MATCH関数は

MATCH(検索値 , 検索範囲 , 照合の種類 )

検索値は、検索したい値

検索範囲は、探す範囲

照合の種類は、0:完全一致、1:検索値以下の最大値、-1:検索値以上の最小値。省略すると「1」が指定されたことになります。完全一致を指定する場合がほとんどだと思います。

INDEX関数は

INDEX ( 参照範囲 , 行番号 , 列番号 ) と指定します。

INDEX関数を挿入しようとすると「引数の選択」というボックスが出てきました。

今回は一番目の「配列,行番号,列番号」を選択しました。

配列:参照範囲を指定します

行番号:参照範囲の何行目を持ってくるかを指定します。1番上を持ってきたいときは「1」と指定します。(列番号を入力する場合は行番号は省略可能です※)

列番号:参照範囲の何列目を持ってくるかを指定します。1番左を持ってきたいときは「1」と指定します。(行番号を入植する場合は行番号は省略可能です※)

※環境によるのかもしれませんが、複数行複数列の範囲を指定した場合、行・列いずれかを省略すると、うまくいきませんでした。単一行の場合は列番号省略、単一列の場合は行番号を省略して、問題ありませんでした。

以下はINDEX関数で複数行列の範囲の中から3行目、2列目の値を持ってきたいときの関数の指定例です。

いまさらながら、INDEX関数、MATCH関数についてお勉強しています。十年以上無視してやってきました。。。

INDEX関数、MATCH関数については以下の記事を参考とさせていただきました。

ありがとうございました。

【Excel】INDEX関数 ~わかりやすいINDEX関数入門~ – オーロラさんの勉強帳 (auroralights.jp)

【Excel】MATCH関数 ~わかりやすいMATCH関数入門~ – オーロラさんの勉強帳 (auroralights.jp)

エクセルINDEX関数とMATCH関数で複数条件AND(かつ)で値を抽出!複数列もOK | ホワイトレイア (whiteleia.com)

コメント

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