(Excel)チェックボックスをカウントする方法

 Excelで、チェックが入っている(入っていない)チェックボックスの数をカウントする方法です。
 新しいチェックボックス(挿入タブから挿入)を用いていますが、従来のチェックボックス(開発タブから挿入)の場合もカウントの仕方は同様です。

チェックされている数をカウントする方法

 次の画像ではE3セルに数式を入力し、C3:C8の範囲に並んでいるチェックボックスのうちチェックが入っているものの数をカウントしています。

 E3セル

=COUNTIF(C3:C8,TRUE)

 チェックボックスにチェックが入っているとそのセルの値は「TRUE」になります。そこで、COUNTIF関数を使い第2引数(条件)を「TRUE」とすればカウントできます。

チェックされていない数をカウントする方法

 次の画像では、C3:C8の範囲のチェックボックスのうちチェックが入っていないものの数をカウントしています。

 E3セル

=COUNTIF(C3:C8,FALSE)

 チェックが入っていないとそのセルの値は「FALSE」になります。よってCOUNTIF関数の第2引数(条件)を「FALSE」とすることでカウントできます。



 ただし細かい話をすると、値がないチェックボックスというのもありえます。
 あまり目にする機会はないと思いますが、チェックボックスがあるセルを選択してBackSpaceキーを押すとセルの値がなくなる(空白セルになる)一方でチェックボックスは残り、色はグレーになります。また、従来の(開発タブから挿入する)チェックボックスのリンク先セルを設定した場合でも、一度クリックするまではセルに値がありません(空白セル)。
 このようなチェックボックスは上記の数式でカウントすることができません。

 


 どちらもチェックがないものとしてカウントする場合、次のような数式にするのが一例です。

 E3セル

=COUNTIF(C3:C8,FALSE)+COUNTIF(C3:C8,"=")

 「COUNTIF(C3:C8,FALSE)」で値がFALSEになっているセルを、「COUNTIF(C3:C8,"=")」で空白セルをカウントして足しています。
 TRUEでないものをカウントすればいいので、より単純に「=COUNTIF(C3:C8,"<>TRUE")」とするのもOKです。

複数条件の場合(チェックボックスが複数列に並ぶケース)

 チェックボックスが複数列にわたって並んでいる場合に、複数条件でカウントする例です。
 ただしチェックが入っているという条件のみ扱うものとします。

すべてのチェックが入っている行をカウントする方法

 次の画像ではC~E列の3つの列にチェックボックスが並んでいます。
 そこでG3セルに数式を入力して、すべてのチェックが入っている行の数をカウントしています。

 G3セル

=COUNTIFS(C3:C9,TRUE,D3:D9,TRUE,E3:E9,TRUE)

 COUNTIFS関数を使うことで複数条件(AND条件)のカウントができます。
 C3:C9、D3:D9、E3:E9の3つの範囲について条件をすべて「TRUE」とすることで、すべてのチェックが入っている行をカウントしています。



 ただし上記の式では列が増えるほど数式が長くなり入力が面倒になります。
 そこで次の画像ではBYROW/LAMBDA関数を使うことで、チェックボックスが何列あっても範囲指定が1つで済むようにしています。

 G3セル

=SUM(BYROW(C3:E9,LAMBDA(x,AND(x)*1)))

 BYROW/LAMBDA関数によりC3:E9の範囲をxと名付け、その1行ごとにAND関数ですべてチェックが入っているか判定(結果はTRUE/FALSE)しています。さらに「*1」を加えることで、すべてチェックが入っている行が「1」に、そうではない行が「0」に変換されます。
 最後にSUM関数で合計することで、すべてチェックが入っている行の数をカウントしています。

1つ以上チェックが入っている行をカウントする方法

 次の画像では、1つ以上のチェックが入っている行の数をカウントしています。

 G3セル

=SUMPRODUCT((C3:C9+D3:D9+E3:E9>0)*1)

 COUNTIFS関数を使いたくなりますがOR条件(または)のカウントができないので、ここではSUMPRODUCT関数を使っています。
 「C3:C9+D3:D9+E3:E9>0」により各行にチェックが1つ以上入っているかを判定(結果はTRUE/FALSE)し、さらに「(~)*1」を加えることで1つ以上チェックが入っている行が「1」に、そうではない行が「0」に変換されます。
 ここでは古いバージョンに対応できるようあえてSUMPRODUCT関数を使って合計(1をカウント)しています。ただしスピル機能があるバージョンならSUM関数で済みます。



 次の画像も結果は同じですが、範囲指定が1つで済むようにしています。

 G3セル

=SUM(BYROW(C3:E9,LAMBDA(x,OR(x)*1)))

 BYROW/LAMBDA関数によりC3:E9の範囲をxと名付け、その1行ごとにOR関数ですべてチェックが入っているか判定(結果はTRUE/FALSE)しています。さらに「*1」を加えることで、1つ以上チェックが入っている行が「1」に、そうではない行が「0」に変換されます。
 最後にSUM関数で合計することで、1つ以上チェックが入っている行の数をカウントしています。



 もう1つおまけです。
 次の画像も結果は同じですが、範囲指定が1つで済み、さらに「○個以上チェックが入っている行」をカウントできるようにしています。

 G3セル

=SUM(BYROW(C3:E9,LAMBDA(x,(COUNTIF(x,TRUE)>0)*1)))

 「(COUNTIF(x,TRUE)>0)*1」により、1つ以上チェックが入っている行を「1」に、そうではない行を「0」に変換しています。
 「>0」の部分を「>1」とか「>=2」にすれば、2つ以上のチェックが入っている行をカウントできます。

従来のチェックボックスの場合

 チェックボックスには、「開発」タブの「挿入」→「フォームコントロール」から挿入する従来のタイプのものもあります。このチェックボックスも右クリック→「コントロールの書式設定」と進んでリンク先のセルを設定することにより、リンク先のセルに「TRUE」「FALSE」と表示させることができます。これにより上記と同じ方法でカウントできます。

 参考記事
(Excel)チェックボックスを作成する方法 - いきなり答える備忘録

 ただしバージョンによってはLAMBDA関数を用いる方法が使えない場合もありますのでご注意ください。