いきなり答える備忘録

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

(LibreOffice Calc)文字列に含まれる特定の文字をカウントする

LibreOffice Calcにて、文字列中の特定の(指定した)文字の数を数える方法についてです。

  • REGEX関数とLEN関数を組み合わせて、文字列に含まれる指定した文字の数をカウントすることができます。
  • 指定する文字が複数であっても簡単にカウントできるのがメリットです。

手順

f:id:accs2014:20200120003950p:plain:right:w600

 B3からB5には同じ文字列が入力されています。
 これに対してC3からC5に次のように入力します。

 C3~C5セル

=LEN(REGEX(B3,"[^あ]","","g"))
=LEN(REGEX(B4,"[^あが]","","g"))
=LEN(REGEX(B5,"[^か-ご]","","g"))

 最初の式は、文字列中の「あ」以外の文字を空文字列に置き換えて文字列をカウントしています。結果的に「あ」の数がカウントされます。各カッコ([ ])がないと別の意味になります(1文字目である「あ」のみが対象となる)ので注意が必要です。また、「"g"」がないと「あ」以外の文字のうち1文字しか置換されず、結果的に全く誤った値が返されますのでこちらも注意してください。
 2番目の式は「あ」「が」以外の文字を空文字列に置き換えてカウントしています。結果的に「あ」と「が」の数がカウントされます。
 3番目の式では「-」を使って、置換対象となる文字の範囲を指定しています。これにより「か」「が」「き」「ぎ」「く」「ぐ」「け」「げ」「こ」「ご」の10種の文字がカウントの対象となります(「ご」に注意)。このような指定も便利ですが、例えば「[^か-こ]」と指定した場合に「かきくけこ」以外に「が」「ぎ」「ぐ」「げ」が対象となる(「ご」は含まれない)など、濁音や半濁音等の扱いに注意が必要です。
 

f:id:accs2014:20200120003954p:plain:right:w500

 結果はこうなります。
 SUBSTITUTE関数を使う方法がメジャーですが、カウントする文字の種類が増えるとネストする必要がありますので、その場合はこちらの方法が有利です。