見出し画像

クール!Excelの関数で英単語数を数える方法

ExcelにはLEN関数という文字数カウントに使える関数がある。原文が日本語や中国語の場合はLEN関数を使えばそのまま文字数を数えることができ簡便である。だが英語やフランス語の単語数を数えたいという場合はLEN関数はそのままでは使えない。英単語を直接数える関数も今のところ存在しないようだ。

さあ困ったどうしよう。
結論から言うとLEN関数にちょっと工夫を加えれば英単語数を数えることが可能だ。

実は筆者は普段翻訳会社のPMとして勤務している。こまごまとしたテキスト処理などは日常茶飯事でありそこから小技をひらめくことなどもしばしばである。

本題に戻ろう。ExcelのLEN関数で単語数を数えたいのだった。

まずは原理的なところから説明しよう。
例えばThank you very much. という英語の文があるとする。
単語数は4であるはずなのにこれをLEN関数で数えると20となってしまう。なぜならLEN関数は「スペースを含めた文字数」をカウントしてしまうからだ。下記の図をみてもらうと分かるだろう。

では、どうすれば「単語数」を数えることができるだろうか。先の図をもう一度よく見てみよう。

ここで何かに気づかないだろうか。そう、英語の単語の後ろには必ずスペースが付いている。

しかし、単語数とスペースの数がイコールかというとそうではなく、末尾の単語にはスペースがつかず差が1となる。ここでは単語数より1少ない3がスペースの数だ。

スペースの数(3)に1を足すと単語数(4)という関係も見てとることができるだろう。

これをExcelの関数で表すことができればExcelのセル内の単語数を数えることができてしまう。

Excelにはスペースの数をカウントする関数はないので何とか工夫してスペース数を抽出する方法を考える。抽出できてしまえば1を足して単語数が出せるはずだ。

手順を示そう。

STEP1. LEN関数でスペースを含めてカウント…Nとする

STEP2. SUBSTITUTE関数でスペースをスペースなしに置換…nとする

STEP3. N-n.でスペース数が残るので1を足すと単語数

今の手順をExcelの関数で数式にすると、こうなる。

=LEN(B3)-LEN(SUBSTITUTE(B3,” ”,””))+1
※Thank you very much. がExcelファイルのB列3番目に入っていると思ってほしい

次のものは実際に筆者が業務で管理に使用したものを加工したものだ。
こんなイメージで、テキストは縮小して表示にしている。

筆者としては文字数とスペース数の関係というシンプルこの上ない事実を単語を抽出する数式として利用する発想にクールさを感じる。

皆さんの参考になったなら幸いだ。

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