5/11/2023

Excel。1行おきに抽出したデータを別の場所に、手早く取り出したい【extract】

Excel。1行おきに抽出したデータを別の場所に、手早く取り出したい

<FILTER+MOD+ROW関数>

帳票などで、1行ごとのデータを抽出したい場合、数式をつかって、1行おきになるように判断させます。

その結果をオートフィルターで抽出して、コピーするという方法をよく採用していましたが、FILTER関数をつかうことで、手早く抽出し、別の場所に取り出すことができます。


次の表のようにしたいわけです。

FILTER関数

 

A1:E9の表は、販売数と売上高が交互になった表であることがわかります。


売上高のデータだけ、つまり1行おきにデータを抽出したいわけですね。


どうやったら、抽出することができるのかと考えるところですが、FILTER関数をつかえば、手早く抽出することができます。


11行目に見出し行をコピーしておきます。

A12に次の数式を設定します。

=FILTER(A2:E9,MOD(ROW(B2:B9),2)=1)


スピル機能によって、オートフィルで数式をコピーする必要はありません。

FILTER関数は、わかりやすい関数なので、使い勝手もいいように思えます。


それでは、数式とFILTER関数の引数を確認しておきましょう。


最初の引数は、「配列」です。データの範囲ですから、A2:E9と設定します。


2番目の引数は、「含む」です。これは、条件のことです。


抽出する条件ですが、1行おきに抽出したいわけなので、MOD+ROW関数の組み合わせで対応することができます。


設定した条件は、

MOD(ROW(B2:B9),2)=1


ROW関数は行番号を算出する関数です。


MOD関数は、除算した余りを算出する関数です。


その値を2で除算した余りが1と等しいかという条件をつくったわけですね。


これで、一行おきにデータを抽出することができます。


なお、MOD+ROW関数で、行が交互になるような条件をつくりましたが、「販売数」・「売上高」という項目で区別できるので、FILTER関数だけでも抽出することができます。


=FILTER(A2:E9,B2:B9=”売上高”)


このようにFILTER関数と他の関数を組み合わせてつかうことで、抽出作業が改善できるかもしれませんね。