Excel。1行おきに抽出したデータを別の場所に、手早く取り出したい
<FILTER+MOD+ROW関数>
帳票などで、1行ごとのデータを抽出したい場合、数式をつかって、1行おきになるように判断させます。
その結果をオートフィルターで抽出して、コピーするという方法をよく採用していましたが、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関数と他の関数を組み合わせてつかうことで、抽出作業が改善できるかもしれませんね。