Excelで単語を数えるにはどうすればいいですか?
Excel にあればいいのにといつも思うオプションが 1 つあります。それは、セル内の単語数をカウントすることです。 MS Word で作業している場合は、ステータス バーに、シート内にある単語の数を示す組み込みオプションがあります。
しかし、Excel に関しては、単語を数えるそのようなオプションはありません。 テキストは含まれるが実際の単語は含まれないセルの数を数えることができます。
ご存知のとおり、 Excel には関数があり、それらを使用してほぼあらゆる計算を行うことができます。セル内の単語をカウントできる数式を作成できます。
この記事では、Excel で単一のセル、セル範囲、さらにはワークシート全体から単語を数える方法を学びます。また、セル範囲から特定の単語を数える方法も説明します。
1. 単一セル内の単語を数える
セル内の単語をカウントするには、LEN 関数とSUBSTITUTE 関数を組み合わせる必要があります。数式は次のようになります (テキストはセル A1 にあります)。
=LEN(A1)-LEN(SUBSTITUTE(A1," ",""))+1
この数式を使用してセルを参照すると、結果として 7 が返されます。はい、セルには合計 7 つの単語が含まれています。
使い方
この公式に入る前に、次のように考えてください。通常の文では、単語が 8 つある場合、それらの単語には必ず 7 つのスペースが含まれます。右?
これは、スペースよりも常に単語が 1 つ多いことを意味します。考え方は簡単です。単語を数えたい場合は、スペースを数えて 1 つ追加します。この式を理解するには、それを 3 つの部分に分ける必要があります。
最初の部分では、LEN 関数を使用してセル A1 の文字数を数えました。 2 番目と 3 番目の部分では、SUBSTITUTE と LEN を組み合わせてセルからスペースを削除し、文字数をカウントしました。この時点で、次のような方程式が得られます。
スペースを含む文字の合計数とスペースを含まない文字の合計数。 2 つの数値を引くとスペースの数が得られ、最後に 1 を追加する必要があります。結果として、セル内の単語の総数である 7 が返されます。
重要: 上記の数式を使用すると、セルが空であっても 1 が返されるため、この問題を回避するには、IF 関数でラップすることをお勧めします。
=IF(ISBLANK(A2),0,LEN(A2)-LEN(SUBSTITUTE(A2," ",""))+1)
この数式は、最初にセルをチェックし、セルに値がある場合にのみ単語数を返します。
2. UDF を使用する
上記の数式に加えて、このためのUDF を作成するための小さなコードを書きました。このコードは、単純に単語数を返すカスタム関数を作成するのに役立ちます。つまり、機能を組み合わせる必要はありません。
Function MyWordCount(rng As Range) As Integer MyWordCount = UBound(Split(rng.Value, " "), 1) + 1 End Function
使い方を説明しましょう。
- まず、このコードを VBA エディタに入力します。
- 次に、スプレッドシートに戻って「=MyWordCount(」と入力し、値が入っているセルを参照します。
そして単語数を返します。
関連: Excel の数式バー
3. セル範囲内の単語を数える
次のレベルに進みましょう。ここでは、単一のセルではなく、セル範囲から単語をカウントする必要があります。幸いなことに、上で使用したのと同じ式 (簡単な変更のみ) を使用するだけで済みます。そして、式は次のようになります。
=SUMPRODUCT(LEN(A1:A11)-LEN(SUBSTITUTE(A1:A11," ",""))+1)
上記の数式では、A1:A11 がセル範囲であり、数式を入力すると、結果として 77 が返されます。
使い方
この式は最初の方法と同じように機能しますが、ほんの小さな進歩にすぎません。唯一の違いは、それを SUMPRODUCT でラップし、1 つのセルだけではなく範囲全体を参照していることです。
SUMPRODUCT がテーブルを受け入れることができることをご存知ですか?したがって、これを使用すると、各セルの単語数が含まれる配列が返されます。そして最後に、これらの数値を合計して、列内の単語の数を示します。
4. ワークシート全体の文字数
このコードは、私が仕事で使用している便利なマクロ コードの 1 つで、ワークシート内のすべての単語を数えるのに役立ちます。
Sub Word_Count_Worksheet() Dim WordCnt As Long Dim rng As Range Dim S As String Dim N As Long For Each rng In ActiveSheet.UsedRange.Cells S = Application.WorksheetFunction.Trim(rng.Text) N = 0 If S <> vbNullString Then N = Len(S) – Len(Replace(S, " ", "")) + 1 End If WordCnt = WordCnt + N Next rng MsgBox "There are total " & Format(WordCnt, "#,##0") & " words in the active worksheet" End Sub
これを実行すると、アクティブなワークシート内の単語数を示すメッセージ ボックスが表示されます。
5. 範囲から特定の単語/テキスト文字列をカウントします。
ここでは状況が異なります。セル範囲内の特定の単語を数えたり、列に値が出現する回数を確認したりする必要があるとします。
この例を見てみましょう。以下に 4 つのセルの範囲があり、この範囲から単語 “Monday” の出現数をカウントする必要があります。
このための式は次のとおりです。
=SUMPRODUCT((LEN(D6:D9)-LEN(SUBSTITUTE(D6:D9,"Monday","")))/LEN("Monday"))
それを入力すると、「月曜日」という単語までのカウントダウンに戻ります。 4です。
重要:この関数は、その単語を含むセルの数ではなく、範囲内の単語の数 (単語の頻度) を返します。月曜日は 3 つのセルに 4 回あります。
使い方
この機能を理解するには、やはり 4 つの部分に分割する必要があります。最初の部分では、LEN 関数はセル内の文字数の配列を返します。
2 番目の部分では、単語「Monday」を削除して、セルの文字数の配列を返します。
3 番目の部分では、LEN 関数はキーワード「Monday」の文字数を返します。
その後、2 番目の部分から最初の部分を減算し、3 番目の部分で除算すると、各セルの「月曜日」の単語数を含む配列が返されます。
4 番目の部分では、SUMPRODUCT はこの配列の合計を返し、範囲内の「月曜日」の数を返します。
Excelファイルを取得する
結論
セルまたはセル範囲にテキストを入力するときはいつでも、これらのメソッドを使用して文字数を制御できます。将来、Excel に単語をカウントするこのオプションが搭載されることを願っています。しかし、今のところ、これらの素晴らしい方法がすべてあります。
どの方法が一番好きですか?ぜひコメント欄でご意見をお聞かせください。ぜひご意見をお待ちしております。そして、この投稿を友達と共有することを忘れないでください。きっと楽しんでもらえると思います。
関連する式
- Excel でテキストが含まれるセルを数える
- Excel の特定の文字を数える
- Excelで範囲内のセルの総数を数える
- Excelで一意の値を数える
- カウント vs. カウンタ