Excel。複数列に個別の条件で合致するデータを抽出するにはどうしたらいいの?
<オートフィルター:AND関数>
オートフィルター機能をつかうことで、条件に合致したデータを抽出することができますが、ちょっと条件が複雑になると、オートフィルター機能単独だと、太刀打ちできないことがあります。
例えば、次のような表で見てみましょう。
B1:D1の数値は、各月の平均値です。
B1の数式は、
=AVERAGE(B4:B10)
今回やりたいことは、4月~6月までの各月の平均以上のもの、すなわち、全部の月で兵員以上だった店舗はどこの店舗なのか、わかるように抽出したいわけです。
抽出とすれば、オートフィルター機能をつかうわけですが、今回のような複数列を対象にした抽出方法はありません。
また、一つだけのフィールドだけであったとしても、平均以上を抽出することは容易ではありません。
オートフィルター機能の数値フィルターで項目にある「指定の値以上」をつかってみても、オートフィルターオプションダイアログボックスが表示されるので、平均値が算出されているセルをクリックすることはできませんし、B1と入力しても、対応してくれません。
つまり、オートフィルターオプションをつかってみても、抽出することができないわけです。
それが、今回は、複数の列が対象となっているわけですね。
では、このようなことは出来ないのでしょうか?
このような場合には、判定用の列をつくってあげる方法が一番わかりやすいと思います。
E4に次の数式を設定します。
=AND(B4>=$B$1,C4>=$C$1,D4>=$D$1)
AND関数をつかうことで、引数内の条件が合致していればTRUEを算出することができます。
IF+AND関数という方法でもいいのですが、条件に合致するかどうかだけわかればいいわけなので、わざわざ、IF+AND関数というネストにしなくてもいいと思いますが、わかりにくい場合には、合致する場合には、「○」とかしておくといいかもしれませんね。
算出できたらば、オートフィル機能をつかって、数式をコピーします。
結果をみてみましょう。
条件が成立していると、「TRUE」を算出して、成立していない場合には「FALSE」を算出しています。
算出することさえできれば、あとは、オートフィルター機能をつかって、「TRUE」のみを抽出してあげれば、いいわけですね。
このように、オートフィルター機能のメニューにない場合は、アイディアによって抽出することができるようになりますので、色々考えてみると、今まで以上に作業効率が改善できるかもしれませんね。