前回、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)
コメント
いつもお世話になってます。
またご教授願いたいことがあります。
vlookup関数やindex&match関数で、参照先の範囲や求める値のところがプルダウンリストでもいいのでしょうか?
例えば=VLOOKUP(A3,Sheet1!$A$2:$B$25,2,FALSE)などで$A$2や$B$25がプルダウン(入力規則のリスト)になっている場合です。
求めたいものが、プルダウンリストにはいっていて、その中から選びたいです。
ご回答お願い致します。
数ある記事の中から本記事をご覧いただきありがとうございます。
大変申し訳ないのですが、ご質問の趣旨がよく理解できず、正確にお答えすることができません。
プルダウンリストであってもなくても、現在表示されている値をVLOOKUPの答えとして返すのでプルダウンリストであるかどうかはあまり影響はないかと思います。