9/20/2021

Excel。VLOOKUP関数をつかって、行方向のデータを列方向に手早く抽出したい【ROW】

Excel。VLOOKUP関数をつかって、行方向のデータを列方向に手早く抽出したい

<VLOOKUP+ROW関数>

通常データベースの表は、行方向のテーブルで管理されています。

その中から、該当するデータを抽出したいのですが、抽出したデータは行方向ではなくて、列方向に表示したい場合は、どのようにしたら、手早く抽出することができるのでしょうか?


やりたいのは、次のようなデータ。


A6:D11のデータから、該当する番号のデータをB1:B4の列方向に表示させています。

データが少ない場合は、力技という方法もあるかもしれませんが、大変です。


今回のケースでは、「VLOOKUP関数」をつかうことで、抽出することができますが、問題となるのは、VLOOKUP関数の数式です。


B2にVLOOKUP関数の数式を作ってみると、

=VLOOKUP($B$1,$A$7:$D$11,2,FALSE)

という数式になるわけですが、オートフィル機能で数式をコピーすると、きちんと抽出してくれません。


列方向に数式をコピーできれば、手早く結果を抽出することができるので、オートフィルを使うことを考えた場合、このVLOOKUP関数の数式をどのようにしたら、いいのでしょうか。

改めて、数式を見てみましょう。

=VLOOKUP($B$1,$A$7:$D$11,2,FALSE)


引数の最初は、検索値ですが、検索値は、オートフィルで数式をコピーしても、参照できるように、絶対参照を設定しておきます。


次の引数の、範囲は、データベースなので、これも、オートフィルで数式をコピーしても、参照できるように、絶対参照を設定しておきます。


先に4番目の引数を確認します。

4番目の引数は、完全一致なので、FALSE を設定します。


3番目の引数の列番号。氏名なので、左から2番目のデータなので、「2」と設定します。


この列番号が問題になるところです。


オートフィルで数式をコピーしたら、この数値がズレてほしいわけですね。

ところが、「2」という数値を入力しているため、全部「2」になってしまうわけです。


これをどうにかして、オートフィルで数式をコピーしたとき、「3」「4」と連動して変化してほしいわけです。


そこで、ROW関数をつかいます。ROW関数は、行番号を算出してくれる関数です。


下方向。つまり、行方向にオートフィルで数式をコピーした時に、行番号も変化(増加)してくれます。


では、次のように列番号のところに、ROW関数をつかった数式に修正してみます。


=VLOOKUP($B$1,$A$7:$D$11,ROW(),FALSE)


オートフィルで数式をコピーしてみましょう。


このように、オートフィルで数式をコピーすることで、行方向のデータを列方向に抽出することができました。

列番号が、飛び飛びになっている場合でも、ROW関数をうまくつかうことで、手早く抽出することができます。