見出し画像

リストの数え方と COUNTA + FILTER で1になる問題の回避方法

Googleスプレッドシートエクセルで リストの記入数を数えたい!と言うこと、たまにありますよね。 単純に数えるのはCOUNTA 関数などがググるとすぐ出てきますが、特定条件のケースでのカウントと罠について順に解説したいと思います。

基本の数え方

COUNT()

数値が入力されたセルの個数を数えるCOUNT関数です。

=COUNTA(数えたい範囲)

コンピュータの中の処理では、表示上は同じ1でも 数値の1文字の1があり、エクセルやgoogle sheets では文字の時には左詰数値の時には右詰で表示されます。(デフォルトの設定)
COUNT()ではこの「数値」の入っているセルの数を数えてくれます。

COUNTA()

数値または文字列が入力されたセルの個数を数えるCOUNTA関数。

=COUNTA(数えたい範囲)

例えばこんな

よそから拝借した画像です。キーボード入力以外に、マウスで範囲を指定することができます。


COUNTIF

より高度なカウントをしたいときにはCOUNTIFが活躍します。

こちらは指定した条件に一致するセルの個数を数えます。

=COUNTIF(数えたい範囲,検索条件)

まとめるとこんな感じ

自分で作った画像です。小さくてごめんなさい

この辺りで「おお、これでなんでもできるじゃん!!!」っと満足する方も多いと思いますし、実際に普段の仕事ではこれで十分便利です。
ちなみに、等しくない時のカウント方法は、例えば”埼玉県以外”だったら 

=COUNTIF(数えたい範囲, "<>埼玉県)

と "<>" を使います。 似た応用で、数値の場合は "0<(セル)" (00より大きい)  みたいなこともできます。

しかし、稀にもう少し細かいことがしたい時があります。たとえば「リスト以外のセルの条件でカウント」するケース。

複雑な条件付きカウント方法

このNOTEの本題になりますが、リスト外の条件でカウントも使えれば多くのケースで対応できると思います。

下は説明用の例です。図の左の表では、各県の評価を「いけてる」「まあまあ」「うーん」「(空白)」で表し、右の表ではその評価をカウントしています。


↓は「いけてる」の計算をしているセルの記述です。

=COUNTA( FILTER( $C$26:$C$34,REGEXMATCH($C$26:$C$34,E26)))

図では「いけてる」=3、「まあまあ」=3というのが表を参照した文字列から計算が出来ています。ポイントはREGEXMATCHで「いけてる」がついている文字列なら合格、ということで「いけてる県」「いけてる都市」とかでもカウントしてくれます。FILTERを組み合わせる上記のカウント方法だと別の関数を組み合わせて判定ができるため、ほとんどのケースに対応できるのです。

しかし問題が….

右表のカウント数で、左の表にない「だめ」が0のはずが、1にカウントされています。
式は上記と同じなのですが、上記の式だと1になってしまうのです。なぜでしょうか。

それは右表のさらに右に表示しているCOUNTAの中身だけを取り出したFILTER(...)が、エラーになっているからなのです。


解決方法1

これを防ぐには、 IFERROR と言う関数を使いエラーをCOUNTAの中から取り除く儀式を行います。

=COUNTA( IFERROR(FILTER( $C$26:$C$34,REGEXMATCH($C$26:$C$34,E39))))

だめ=0になっていて、右のIFERROR(。。。)の結果は空白になっています。

※IFERROR= if error です。 iferror イフェロォみたいなイタリアン風さんではありません。(笑

2. ワイルドカードを使う

今回ご紹介したい手法と手指は違いますが、単にある文字を含むだけであれば、以下の *(ワイルドカード)をつけた特殊な文字列でカウントする方法があります。 

こちらの方が簡単ですね(笑
ただ、先にご紹介したREGEXMATCHを使う方法は「正規表現」という文字列判定に便利な関数なので

  • 部分一致(~を含む)の判定

  • 前方一致(~で始まる)の判定

  • 後方一致(~で終わる)の判定

  • メールアドレスかの判定

と様々なケースに応用できるため、小技として知っているといざという時に便利です。

いかがでしょうか。FILTERを使う方法もググればすぐにできてますが1になる罠タイプに変貌するケースが説明されていない記事も散見されたのでNOTEにしてみました。

ちなみに今回は空白にしていますがIFERRORはエラー時の値も設定できます。 以下の記事でご説明してくださってますのでご興味がある方にはおすすめします。

REGEXMATCHの親切な記事


この記事が気に入ったらサポートをしてみませんか?