Excel。連続した列のデータを手早く抽出するには、どうしたらいいの?
<VLOOKUP+COLUMN関数>
リストから列方向に連続したデータを抽出したい場合、どうしたら効率よく実施することが出来るでしょうか?
次の表で確認してみましょう。
NOが2のデータを抽出したいとします。
A2に2と入力したら、B2:E2までのデータを抽出したいわけですね。
このような場合は、VLOOKUP関数をつかうことが、解決の一歩目となります。
B2に次の数式をつくったとします。
=VLOOKUP(A2,$A$6:$E$10,2,FALSE)
この数式をオートフィルで列方向にコピーしてみると、残念ながら、うまくデータを抽出することができません。
普通に、VLOOKUP関数で数式をコピーでは、対応できない数式ということがわかりました。
どこを、どのように修正すればいいのかを考えていきましょう。
最初の引数の検索値。
オートフィルで数式をコピーしたときに、検索値が動いてしまっては、検索することが出来ませんので、絶対参照をつかって、セル番地を固定しておく必要があります。
よって、検索値は、「$A$2」
2つ目の引数の範囲ですが、ここは、絶対参照をつかうことは変わりませんので、範囲は「$A$6:$E$10」
引数の範囲は、オートフィルで数式をコピーすることが前提の場合、絶対参照を設定することが多いです。
3つ目の引数の列数。
ここが一番のポイントになります。
「2」とか「3」のように、入力してしまうと、数式をコピーしただけ修正する件数が発生します。
そのため、「2」「3」…というように、連続した数値を自動的に入力する必要があります。
列方向に連続した数値が欲しい場合には、列番号を算出してくれる「COLUMN関数」をつかいます。
列番号に「COLUMN(B2)」と設定します。COLUMN(B2)は、B列なので、「2」を返してくれます。
列ではなくて行方向に連続した数値を算出させたい時には、ROW関数をつかいます。
最後の引数、検索方法は、完全一致なので、「FALSE」と入力します。
よって、修正した数式は、
=VLOOKUP($A$2,$A$6:$E$10,COLUMN(B2),FALSE)
と変更したら、オートフィルで数式をコピーして確認してみましょう。
これで、A2の数値を変更するだけで、列方向に連続するデータを容易に抽出することができました。
オートフィルターをつかって、抽出したデータをコピー&ペーストするという方法もありますが、VLOOKUPをつかってみると、簡単にデータを抽出することができます。