3/18/2025

Excel。1列置きのデータを抽出し、さらに表引きも合わせて行いたい【Table pull】

Excel。1列置きのデータを抽出し、さらに表引きも合わせて行いたい

<VLOOKUP+COLUMN関数>

横長のデータがA1:H5にあります。

1列置きのデータを抽出し、さらに表引きも合わせて行いたい

4月から6月までの売上のデータだけを抽出した表をつくりたい。

できれば、NOを入力したデータのみを表引きしたい場合、どのようにしたらいいのでしょうか。


全体の表から必要な列だけを抽出するだけならば、

HSTACK関数をつかうことで、手早く抽出することができます。


A8に設定した数式は、

=HSTACK(A2:B5,D2:D5,F2:F5,H2:H5)


引数には、必要なフィールドを設定するだけの関数なので、必要な列だけを抽出するならば、とても便利な関数です。


ただ、これに合わせて、例えば、NOが1と3だけのデータを抽出したい。


表引きしたいとなると、HSTACK関数だけでは対応することができません。

少々複雑な数式に変更しなければならなくなります。


そこで、今回は、VLOOKUP関数とCOLUMN関数を組み合わせて、対応していきます。


B8に数式を設定しました。

=VLOOKUP($A8,$A$2:$H$5,COLUMN(A1)*2,FALSE)

あとは、オートフィルで数式をコピーします。


これで、月別の売上の列と、NOが1と3だけのデータを抽出することができました。


では、この数式を確認しておきましょう。


最初の引数は、検索値。A8を選択します。

ただ、列固定の複合参照にする必要がありますので、$A8 とします。


2つ目の引数は、A2:H5の表全体を選択します。

オートフィルで数式をコピーしますので、絶対参照が必要です。

よって、$A$2:$H$5 とします。


3つ目の引数は、列番号。

ここがポイントになるわけです。

オートフィルで数式をコピーしたときに、列番号を2・4・6というように2の倍数が必要になります。


横方向にオートフィルした時に、数値が2の倍数にするために、列番号を求めることができる、COLUMN関数をつかってみます。


COLUMN(A1)*2


これで、A1は1と求められるので、その値に、×2すれば、2の倍数を求めることができます。


最後は、検索方法です。

完全一致なので、FALSE と設定します。


最近、新しい関数が色々登場しております。


関数を組み合わせることで、もっと効率的に求めたり、表引きできると思いますので、試してみるといいものが、発見できるかもしれませんね。