※動作環境はMicrosoft 365またはExcel 2021以降のバージョンになります
はじめに
こんにちは、ティーマネジメントの ゆった です。
今回は前回の記事から引き続き、Excelで重複の無い値の件数を算出する方法の複数条件に対応できる応用をご紹介したいと思います。
Excelで複数の条件を関数に付けたい場合、IF関数ならIFS関数、SUM関数ならSUMIFS関数、COUNT関数ならCOUNTIFS関数...といったように、複数形「IFS」を付けた別の関数が用意されているイメージです。
ですがUNIQUE関数には、条件を付けるための引数もなく、UNIQUE"IFS"関数もありません。
そのため今回の記事では、UNIQUE関数にFILTER関数を「*」や「+」で繋いで複数条件に対応してみたいと思います。
条件を満たす重複を除いたセルをカウントする
FILTER関数に条件を追加して、指定の条件を満たす重複を除いたセルの数を数えてみます。
FILTER関数は条件を「*」で繋ぐことでAND条件(かつ)を、「+」で繋ぐことでOR条件(または)を追加することができます。
例) B列が「赤」かつ空白ではない重複を除いたA列のリストを作成する
= UNIQUE ( FILTER ( A:A , ( A:A <> "" ) * ( B:B = "赤" ) ) )
セルの数を数えるためにこのままCOUNTA関数で囲みたいところですが、
前記事の通り、COUNTA関数で囲うだけでは条件を満たすセルが無い場合にも「1」が返ってきてしまいます。
必ず1カウントされる見出しをOR条件に含めて、最後に「-1」させることで空白列を指定した時には「0」が返るようにします。
例) B列が「赤」かつ空白ではない重複を除いたA列のセルを数える
= COUNTA ( UNIQUE ( FILTER ( A:A , ( A:A<>"" ) * ( B:B="赤" ) + ( B:B="色" ) ) ) ) - 1
条件を満たすセルが無い場合には「0」が返るようになりました!
さいごに
UNIQUE関数、FILTER関数は、慣れると複雑な条件設定ができ幅広く使うことのできる有用な関数ですが、条件を増やせば増やすほど、処理速度はどんどん遅くなってしまいます。
リアルタイムで計算する必要が無い場合はマクロ化することで負荷を軽減することができます。
リアルタイムで更新したい場合でも大量のデータを扱ったり、データを蓄積していく場合はあまりExcelには向いていません。FileMakerなど別のデータベースソフトを用いて専用システムを作成することで、大きく作業時間を削減できる場合もあります。
重い!動かない!といった困ったExcelファイルがある場合には、ぜひ別のアプローチもご検討ください✾