3/19/2022

Excel。2列1組の表から1列置きに行方向に手早く抽出するには【Row direction】

Excel。2列1組の表から1列置きに行方向に手早く抽出するには

<VLOOKUP+ROW関数>

先のことを考えずに、帳票をつくってみたら、そのあと、有効に使えないという表というのがあります。


例えば次のような表。


月ごとに、販売数と金額の2列1組の表ですが、2列目の金額の数値を、B8に転記したいわけです。


効率よく作業したいので、A7に店舗名を入力したら、その月の金額一覧のようにしたいわけです。


月ごとのデータを、一つずつ、コピーして貼り付けるというのでは、時間がかかってしまいます。

まして、データの件数が増えれば、手作業というわけにもいきません。


では、どのようにしたら、手早く1列置きのデータを抽出することができるのでしょうか?


このような場合、「VLOOKUP関数」を使うことで、対応することが可能です。


特に、A7の店舗名を変更したら、それに連動させる必要がありますので、VLOOKUP関数をつかうことで、手早く抽出することができます。

B8に次の数式を設定します。

=VLOOKUP($A$7,$A$3:$G$5,ROW(A1)*2+1,FALSE)


あとは、B10までオートフィルで数式をコピーすれば、4月から6月まで金額を抽出することができました。


これならば、1年分のデータでも、手早く抽出することができます。


では、VLOOKUP関数の引数を説明していきます。


検索値は、「$A$7」。

A7の店舗名を変更することで、それぞれの店舗に合わせたデータを抽出することができます。

オートフィルで数式をコピーするので、絶対参照を設定しています。


範囲は、「$A$3:$G$5」。

帳票のデータ部分を範囲選択します。

ここも、オートフィルで数式をコピーするので、絶対参照を設定します。見出し行は不要ですね。


列番号が、今回のポイントです。

「ROW(A1)*2+1」。


VLOOKUP関数の列番号は、先程「範囲」に設定したデータの左から何列目なのかという指示をするわけです。


そこで、逆にどうやったら、「3・5・7」という、一つ置きの数値を、もってくることができるのかを考えてあげればいいわけです。


オートフィルで数式を下方向にコピーするわけなので、変化があるのは、行番号です。

行番号を算出するには、「ROW関数」を使います。


2列1組なので、ROW(A1)とすれば、「1」という数値が算出できます。

オートフィルで数式をコピーすることで、5月のデータは、ROW(A2)となり「2」という数値を算出します。


この算出された結果を2倍すれば、偶数列のデータを抽出できます。

さらに、「+1」することで、奇数列である、「3・5・7」列のデータを抽出することができるという仕組みです。


引数の最後の検索方法は、完全一致なので「FALSE」と設定すれば、完成です。


このように、VLOOKUP関数をつかうことで、色々な抽出方法が見つかるかもしれませんので、試してみるといいかもしれませんね。