Excel。該当する2列置きのデータを手早くコピーするにはどうしたらいい
<VLOOKUP+COLUMN関数>
帳票のようなデータから、例えば2列置きごとに必要なデータのみを手早く抽出するとしたら、どのようにしたらいいのでしょうか?
例えば、次の表。
店舗名が新宿と品川のデータの、4月~6月の売上データを抽出したいわけです。
全店舗だとしても、範囲選択してコピーするだけでも、面倒ですし、それが決まった店舗のみとなると、範囲選択するだけでも、面倒です。
コピー&ペーストの作業しか方法がないのでしょうか?
ピボットテーブルをつかってもいいですが、実はこのようなケースの場合、VLOOKUP関数をつかうことで、手早くデータを抽出することが出来ます。
B2には、次の数式を設定しています。
=VLOOKUP($A2,$A$6:$G$10,COLUMN(A1)*2+1,FALSE)
とてもシンプルなVLOOKUP関数の数式であることが見てわかりますね。
VLOOKUP関数は、関数の特性とアイディアで、現場で大いに活躍してくれる関数の一つだといえます。
考えるポイントは、全データではなく、新宿店と品川店のみであるということ。
それと、2列置きのデータであるということ。
そこで、該当のデータのみということから、VLOOKUP関数をつかってみたらどうだろうと考えてみます。
オートフィルで数式をコピーするのが、手早く処理するためには必要です。
オートフィルでVLOOKUP関数をコピーする時にネックになるのが、引数の列番号です。
「列番号」は、数値である必要があります。
そこで、オートフィルで列方向にずらしたときに、列番号を連動させるために使用するお馴染みの関数があります。それが「COLUMN関数」です。
COLUMN関数は、列番号を算出することができる関数です。
今回は、引数の範囲。$A$6:$G$10の3・5・7列目に抽出したいデータがありますので、列番号をどうにかして、3・5・7という数字になるように考える必要があります。
「COLUMN(A1)*2+1」とすることで、2列置きのデータを抽出できることに気づきました。
それでは改めてVLOOKUP+,COLUMN関数の数式を確認してみます。
検索値は、$A2。
列方向にオートフィルで数式をコピーするので、列を固定した複合参照で設定します。
範囲は、$A$6:$G$10。絶対参照を設定しておきます。
列番号は、先程紹介したように、COLUMN(A1)*2+1
検索方法は、完全一致なので、FALSE
あとは、オートフィルで数式をコピーしたら完成です。
このように、VLOOKUP関数は、請求書や納品書などの帳票だけではなくて、アイディアによって、現場で色々使える関数です。
ある規則性がある場合には、VLOOKUP関数で考えてみるというのもいいかもしれませんね。