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関数をうまくつかうことで、手早く抽出することができます。