10/05/2021

Excel。該当する2列置きのデータを手早くコピーするにはどうしたらいい【Every two rows】

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関数で考えてみるというのもいいかもしれませんね。