この表から、D列の組合員IDを検索値として、
C列の氏名を取り出したいんです
でもVLOOKUP関数じゃできなくて…
そうなるとVLOOKUP関数じゃ抽出できないもんね
こうなったら氏名の列の左に組合員IDの列を移動させて…
列を移動しなくても、いい方法があるよ!
見ててごらん!
氏名が抽出できてる!
得意げなキーボードの音はともかく、すごい!
くろねこさん、どうやったんですか?
今回ボクは「INDEX関数」と「MATCH関数」を合わせて使ったのさ!
この式を見てごらん!
んっと…んっと…(ぷしゅー)
だいじょうぶ!難しくみえるけど、ひとつひとつ説明するから安心して!
今回くろねこくんが示した式は、INDEX関数のなかにさらにMATCH関数があってややこしい!
ひとつひとつひも解いていきましょう。
「INDEX関数やMATCH関数ってなんだっけ?」というかたは、こちらの記事でおさらいしておきましょう。
INDEX関数とMATCH関数を組み合わせた使い方
今回とりだす値は、「組合員IDが55555の人の氏名」でしたね。
これをINDEX関数のみを使ってあらわすと、こうなります。
INDEX関数で「上から5番目」「左から3番目」のデータを取り出していますね。
くろねこくんが結果として示した式とどこが違うかと言うと、「5」の部分を、MATCH関数であらわしているところです。
MATCH関数の中身を見てみると、範囲はD2:D12、検索値はJ11セルの組合員ID、検索条件は完全一致。
つまりMATCH関数で、「J11セルの値と同じ組合員IDは、上から何番目にあるか」を取り出していたんです。
そして「上から何番目にあるか」を表すMATCH関数を、INDEX関数の入力として使っていたんですね。
くろねこくんが示した式をもういちど見てみましょう。
INDEX関数の範囲はA2:G12、MATCH関数は「指定した組合員IDが上から何番目にあるか」。
列の番号は左から3番目で固定なので、「3」となっています。
VLOOKUP関数ではできない「検索条件の左側の値」を抽出できる
さらにこの組みあわせのすごいところは、「検索値の左側の値をとりだしている」ところです。
検索条件の組合員IDはD列。
とりだしたい氏名はC列。
このような場合、まず浮かぶのはVLOOKUP関数ですね。
しかしVLOOKUP関数は、とりだしたい値が検索値の列より右側にある場合にしか使えません。
そこでこの「INDEX関数+MATCH関数」の出番というわけなんです。
VLOOKUP関数ってどんな関数だっけ?という場合、こちらの記事をご覧ください。
最初は頭がこんがらがりましたけど、ひとつずつ見てみたらわかりました!
そんなとき最初は「うっ!」ってなっちゃうけど、関数をすこしずつ紐解くと案外わかったりするよ!
わかりました!
そして他人の作ったそんな式をみて「なんじゃこりゃ!?」となることもとても多いです。(;_;)