いきなり答える備忘録

G Suite・Microsoft 365・LibreOfficeなどに関するメモと日々の実験

(Gスプレッドシート)英字、数字、ひらがな、カタカナの文字数を数える

 Googleスプレッドシートで、文字列中の英字、数字、ひらがな、カタカナの文字数をカウントする方法についてです。

  • REGEXREPLACE関数とLEN関数の組み合わせにより、文字種に応じて文字をカウントできます。
  • 複数の文字種を組み合わせてカウントすることもできます。

手順

サンプルデータと実行結果

f:id:accs2014:20200106003111p:plain:right:w650

 B3:B10セルには対象となる文字列が記録されています。
 これに対し、C3:C10セルには各種の文字種をカウントする式が記録されています。

f:id:accs2014:20200106003115p:plain:right:w650

 式の結果はこうなります。
 それぞれのセルに記録されている式の意味と内容については下記の通りとなっています。

半角英大文字をカウントする

 C3セルには次のように入力しています。

=LEN(REGEXREPLACE(B3,"[^A-Z]",""))

 正規表現で半角英大文字は「[A-Z]」と表されますので、それ以外つまり「[^A-Z]」を空文字列に置き換えたうえで文字数をカウントしている、というわけです。
 以下の文字種も全く同様の考え方でカウントしています。

半角英小文字をカウントする

 C4セルには次のように入力しています。

=LEN(REGEXREPLACE(B4,"[^a-z]",""))

 半角英大文字は「[a-z]」と表されますので、それ以外の「[^a-z]」を空文字列に置き換えて文字数をカウントしています。

半角数字をカウントする

 C5セルには次のように入力しています。

=LEN(REGEXREPLACE(B5,"[^0-9]",""))

 半角数字は「[0-9]」と表されますので、それ以外の「[^0-9]」を空文字列に置き換えて文字数をカウントしています。

全角英大文字をカウントする

 C6セルには次のように入力しています。

=LEN(REGEXREPLACE(B6,"[^A-Z]",""))

 全角英大文字は「[A-Z]」と表されますので、それ以外の「[^A-Z]」を空文字列に置き換えて文字数をカウントしています。

全角英小文字をカウントする

 C7セルには次のように入力しています。

=LEN(REGEXREPLACE(B7,"[^a-z]",""))

 全角英小文字は「[a-z]」と表されますので、それ以外の「[^a-z]」を空文字列に置き換えて文字数をカウントしています。

全角数字をカウントする

 C8セルには次のように入力しています。

=LEN(REGEXREPLACE(B8,"[^0-9]",""))

 全角英小文字は「[0-9]」と表されますので、それ以外の「[^0-9]」を空文字列に置き換えて文字数をカウントしています。

ひらがなをカウントする

 C9セルには次のように入力しています。

=LEN(REGEXREPLACE(B9,"[^ぁ-ん]",""))

 ひらがなは「[ぁ-ん]」と表されますので、それ以外の「[^ぁ-ん]」を空文字列に置き換えて文字数をカウントしています。
 なお、「[^あ-ん]」(「あ」が大きい)としてしまうと小さい「ぁ」をカウントできませんので注意が必要です。

全角カタカナをカウントする

 C10セルには次のように入力しています。

=LEN(REGEXREPLACE(B10,"[^ァ-ヴ]",""))

 全角カタカナは「[ァ-ヴ]」と表されますので、それ以外の「[^ァ-ヴ]」を空文字列に置き換えて文字数をカウントしています。
 なお、「[^ア-ン]」としてしまうと小さい「ァ」と「ヴ」をカウントできませんので注意が必要です。

複数の文字種をカウントする

 実例は省略しますが、例えば半角英大文字と半角数字をカウントする場合、半角英大文字と半角数字は「[A-Z0-9]」と表されますので、「[^A-Z0-9]」を空文字列に置き換えてカウントすればOKです。
 単純に上記のそれぞれの式を「+」でつなぐという手もあります。