12/25/2021

Excel。連続した列のデータを手早く抽出するには、どうしたらいいの?【Consecutive columns】

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をつかってみると、簡単にデータを抽出することができます。