4/14/2021

Excel。複数列に個別の条件で合致するデータを抽出するにはどうしたらいいの?【Matching data】

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」のみを抽出してあげれば、いいわけですね。


このように、オートフィルター機能のメニューにない場合は、アイディアによって抽出することができるようになりますので、色々考えてみると、今まで以上に作業効率が改善できるかもしれませんね。