先日仕事でデータの重複チェックを行おうと思ってCOUNTIF関数でやってみようと思ったら、思いがけない結果にハマってしまったので備忘録。
数値で検索?
下記の事例ではCOUNTIF関数を使用して、それぞれのNoの個数を数えようとしています。
B2セルに記載されている関数は「A2:A7セルに001はいくつあるか?」(というつもり)と記載されています。
実際、目検してみると001は2つ存在しています。
ところが関数の答えは5と返ってきています。
これはCOUNTIF関数が数値とみなせるものは数値に変換した上で条件を満たすものを数えていると思われます。
これであれば結果として5が返ってきている事は理解できます。
ではこのような事例の場合にどうすれば正しい個数を数えられるでしょうか。
解決法
シングルクォーテーションを追加
実務では次の方法で乗り切りました。
数値に勝手に置き換えられるんだったら、文字列だぞとExcelにアピールする方法です。
こうすることでExcelもこちらの意図を理解して正しく数えることが出来ました。
関数をあれこれ悩むのも良いですが、仕事中に出てきたトラブルだったので解決速度を優先しました。
別の関数
COUNTIF関数がこちら意図を理解してくれないというのであれば、別の関数を頼ろう。
ということでいくつか意図をよろしく理解してくれる関数たちを紹介。
SUMPRODUCT関数以外はスピル機能が搭載されているExcelでないと動作しません。
SUMPRODUCT関数もスピル導入前のVerではCSE数式(配列数式:入力確定時にCtrl + Shift + Enterで確定)で入力する必要があります。
それぞれの関数の説明は割愛いたしますが、いづれの方法でも特に意識することなくデータ件数を正しく集計することが出来ています。
COUNTIF関数を躾ける
私自身はあまり上手い方法を見つけることが出来ませんでした。
twitterでExcelの達人たちが色々な方法でCOUNTIF関数で集計する方法を教えてくださっています。
下記ツイのツリーをご参照ください。
COUNTIF関数がダメなら、関数で集計しようと思ったら、どんな方法があるだろうか? https://t.co/PcehwyMUKr pic.twitter.com/doAhj0fjp8
— Kou Excelが大好きだ! (@LoverExcel) 2022年8月11日
まとめ
使い慣れている関数でもこのように気づきにくい仕様があるものなんですね。
数式の間違いチェックも兼ねて何らかの検算は必要だと改めて感じました。