VLOOKUP関数を使用するとき、絶対参照を使っても列番号だけは手作業で変えてるってことありませんか?
今回は列番号を自動的に適切な数字に変えてくれる方法を紹介したいと思います。
例えば、下ピンク色部分を埋めたい場合、VLOOKUP関数で右側の商品マスタからひっぱってきますよね。その際、通常の方法で入力すると、以下のようになります。
比較の為、通常のVLOOKUP関数を入力して説明します。
=VLOOKUP($B3,$H:$L,2,FALSE)
C3セルに入力した式をF列までコピーして使うので、参照先がズレないように検索値と範囲は絶対参照で固定しています。
絶対参照については別記事で詳しく紹介してますので、絶対参照があまりわからないって方はそちらからご覧ください。
=VLOOKUP($B3,$H:$L,2,FALSE)
上記のように通常どおりVLOOKUP関数を入力した場合、C3セルには問題なく、マスタから情報がひっぱってこれました。ではその式をF3までドラッグコピーしてみましょう。
以下のように全て商品名が入ってしまいました。
なぜなら、C3セルからF3セルまで、列番号が全て2が入ってしまっているからです。
各セルに正しい値を持ってくるためにはVLOOKUP関数の列番号を修正しないといけません。
D2セルのVLOOKUP関数の列番号を3にE2セルのVLOOKUP関数の列番号を4にF2セルのVLOOKUP関数の列番号を5にすれば、ようやく正しい値を持ってくることができます。
でも・・・正直めんどくさいですよね。まだこのくらいの表なら手修正は可能ですが、実務で使用するときなんて、もっと列番号があったりするものですから、正直やってられません。
そういう場合修正すら、必要ない方法をご紹介します。(やっとかよ!!)
VLOOKUP関数の列番号をコピー先のセルで適切な数字に変える方法
MATCH関数を使おう!!
MATCH関数は第一引数に指定した値が第二引数で指定した範囲においていくつ目に出てくるかという数字を出してくれる関数です。
とりあえず使ってみたほうがわかりやすいので、下表で説明します。
C3セルに =MATCH(C2,$H$2:$L$2,0) と入力しました。
これは、C2セル(商品名)がH2からL2までの中で左から何列目にあるかを出してくれてます。
商品名はH・・・Iなので、2という数字が表示されてます。
同様に初版はH・・・I・・・Jなので3ですね。
これを応用してVLOOKUP関数の第3引数にMATCH関数をくみこむのです!!
=VLOOKUP($B3,$H:$L,MATCH(C$2,$H$2:$L$2,0),FALSE)
下で詳細を見ていきましょう。
=VLOOKUP($B3,$H:$L,MATCH(C$2,$H$2:$L$2,0),FALSE)
C3セルに商品名をいれたいので、B3セル(コード1001)の値をH列からL列の中の〇列目を検索して。というVLOOKUP関数です。この〇列の〇を適切な数字に変えてくれるようMATCH関数を使ってます。
C2セル(商品名)はH2からL2までで何列目にありますか?というのが=MATCH(C$2,$H$2:$L$2,0)
一つずつ理解していけば、難しくないですよね。はじめに長ったらしい関数を見てしまうと、無理!!って思うかもしれませんが、結局通常のVLOOKUP関数で列番号を適切な数字を入れたいからMATCH関数を使用したってだけです。
どちらも一つずつなら使えるって方は結構いらっしゃるんじゃないでしょうか?
関数を一つずつ理解していけば、組み合わせても難しくはないですよ。とっても便利で時短になりますので、どんどん使っていきましょう!!
コメント