いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Gスプレッドシート)丸の数を数える方法

 Googleスプレッドシートで、丸(○)の記号が入力されているセルの数をカウントする方法についてです。
 基本的にCOUNTIF関数を使って解決できますが、丸の記号と他の文字が紛らわしい場合があるので注意する必要があります。

値が丸(〇)であるセルの数を数える方法

 ここでは、C列(C3:C9の範囲)に記されている丸(〇)の数をカウントしてE3セルに表示させるものとします。
 なおフォントがArial(デフォルト)だとこのように〇が小さいものになります。大きく見える場合は漢数字のゼロであることも考えられますので注意してください。

 


 数える方法は難しくありません。
 E3セルに次のような式を入力すればOKです。

 E3セル

=COUNTIF(C3:C9,"○")

 COUNTIF関数は、指定した文字列が入力されているセルの数をカウントする関数です。
 これを使い、第1引数(対象範囲)としてC3:C9を、第2引数(数えたい文字列)として"〇"を指定しています。



 繰り返しになりますが、丸(〇)の記号とまぎらわしい文字として漢数字のゼロ(〇)があります。
 次の画像ではE3セルに上記と同じ式を入力していますが、C列に記録されているのが漢数字のゼロなのでうまくカウントできず結果は0となっています。



 そこでCOUNTIFの第2引数を漢数字のゼロに、つまり「"〇"」とするとうまくカウントできました。
 セル内に入力されている文字がどっちか分からない場合は数式内にコピペしてしまうのが一つの方法です。

セル内の丸(〇)の数を数える方法

 1つのセル内に複数の丸が入力されている場合にその数を数える方法です。
 まずはC列に丸だけが入力されている例です。このような場合はLEN関数を使って簡単に数えることができます。

 D3セル(D7セルまでフィルコピー)

=LEN(C3)

 LEN関数は文字列の長さ(文字数)を数える関数です。この例ではセルに入力されている文字が丸だけなので、文字列の長さを数えることで丸の数が得られるというわけです。



 次は丸以外の文字も含めて入力されている場合に丸の数だけをカウントする方法です。
 ちょっと難しくなりますが次のような式でカウントできます。

 D3セル(D7セルまでフィルコピー)

=LEN(REGEXREPLACE(C3,"[^○]",""))

 REGEXREPLACE関数を使い、文字列中の丸以外の文字を削除しています。その結果の文字数をLEN関数で数えることにより、結果的に丸の数を取得しています。
 この例ではSUBSTITUTE関数を使い「×」を削除してカウントしても同じ結果になります。つまり「=LEN(SUBSTITUTE(C3,"×",""))」としても同じ結果となります。しかしSUBSTITUTE関数では基本的に1種類の文字しか削除できません。一方でREGEXREPLACE関数を使うことで特定の文字以外の文字を一括して削除することができるので、何種類もの文字が含まれる複雑なケースでも簡単に丸だけをカウントできます。



 さらに応用編になりますが、各セルの丸の数をの合計を一発で取得する場合は次のようになります。

 E3セル

=SUM(ARRAYFORMULA(LEN(REGEXREPLACE(C3:C7,"[^○]",""))))

 ARRAYFORMULA関数を使うことで各セル内の丸の数(2,4,3,5,2)を一括取得し、SUM関数で合計しています。
 JOIN関数などで文字列を結合してから1つ上の例と同じ式を適用する方法も考えられますが、結合した時点で文字列が長すぎる(数万文字)とエラーとなりカウントできなくなることが注意点です。