英語の文章では文字数ではなく、単語数をカウントするのが普通です。今回はスプレッドシートで英語の文章の中に含まれる単語数(ワード数)をカウントする方法について解説します。
英語の文章では、文章全体の長さをはかる目安として単語数(ワード数)を使うのが一般的です。英語の文章を書いていて単語数を数える必要があったのですが、このブログで紹介していなかっため、今回は英単語数をカウントする方法について解説します。なお、スプレッドシートで文字数をカウントする方法については別記事で紹介していますのでそちらの記事をご覧ください。
詳しく説明する前に、結論から言うと、単語数をカウントして表示させたいセルに下記の数式を入力することで英語の単語数(ワード数)をカウントし表示させることが可能です。
=IF(LEN(TRIM(対象セル))=0,0,LEN(TRIM(対象セル))-LEN(SUBSTITUTE(対象セル," ",""))+1)
「対象セル」のところは英文を打ち込むセル、または文字数をカウントしたい英文が入力されているセルを指定します。
おおまかに説明すると、英文はスペースで区切られた文章であることから、文章を正しい形に整えたうえで、差分からスペースの数を数え、最後に1を足すことで単語数と同じになるようにしています。
それでは、ここから数式で何が行われているのかを段階的に見ていきましょう。
一番外側はif文で囲っています。ifは一つ目の引数である条件『LEN(TRIM(対象セル))=0』を満たした時には、二つ目の引数『0』、満たしていない場合は三つ目の引数『LEN(TRIM(対象セル))-LEN(SUBSTITUTE(対象セル," ",""))+1』が適用されます。
TRIM関数は文字列の前後にある余計な空白文字を削除し、文字間にあるスペースが重複している場合は1つに整形してくれる関数で、LEN関数は文字数を返す関数です。TRIM関数を使うことで「 I have a pen.」という余計な半角スペースが紛れた15文字カウントになってしまう文字列を「I have a pen.」と余計な半角スペースを除き正しい13文字に整形してくれます。今回の単語数のカウントは、スペースの数を基にカウントするため、スペースを正しく制御するために必要不可欠な関数になります。
最初の条件の部分『LEN(TRIM(対象セル))=0』は、余計な空白文字を削除した後の文字数をカウントし、もし0であれば(何も入ってなければ)という意味です。対象セルに文字が入ってるかどうかを切り分けるための条件ですね。
そして、対象セルに文字が入っているかどうかの判別を行い、何も入っていなければ、二つ目の引数である『0』をそのまま表示。仮に文字が入っていた場合は三つ目の引数『LEN(TRIM(対象セル))-LEN(SUBSTITUTE(対象セル," ",""))+1』が適用されます。
後半に出てくるSUBSTITUTE関数は文字を置き換える関数です。
=SUBSTITUTE(対象セル," ","")
ここで、SUBSTITUTE関数が何をしているかというと、対象セル内の最初に指定した文字列である「半角スペース」を、次に指定した文字列「何もない」に置き換えることで半角スペースをなくしています。
つまり、『対象セルに含まれた整形済みの文字数』から、『対象セルに含まれた整形済みで半角スペースをなくした文字数』を引くことで、『文章の中に含まれる単語間のスペースの数』を正確に出し、そこに1を足しているんですね。
スプレッドシートで英語の文章に含まれる英単語の数(ワード数)をカウントする方法について解説してきました。英語の単語数をカウントする方法として紹介していますが、ラテン語由来の言語などスペースで区切られる言語であれば、この方法で問題なくカウントできると思います。
googletranslate関数を組み合わせれば、日本語を入力したセルを自動翻訳し、各言語でもの単語数を表示させるなんてこともできるので、他言語の出版やコンテンツの管理を行うひとなんかは使い道があるかもしれませんね。
スプレッドシートの使い方については下記の記事でまとめていますので併せてお読みください。