- ベストアンサー
【緊急】エクセルの単語数
こんにちは 緊急で教えてください エクセルを使って、英文から単語を並び替えて、さらにその個数を調べたいです 例えば「I want to go to Japan because I like Japan.」 という文章があったら becdause 1 go 1 I 2 Japan 2 like 1 と、こういう感じです…。 よろしくお願いします C1=(LEN($A$1)-LEN(SUBSTITUTE($A$1,B1,)))/LEN(B1) こういう式まではわかったのですが、 これをどのように使うのかがまだ理解できません。
- みんなの回答 (5)
- 専門家の回答
質問者が選んだベストアンサー
バージョンや目的などの補足が提示されていないので、無駄な回答になるかもしれませんが、例えばA2セルに英文(短文)を入力すれば、その構成単語の一覧(重複のない)とその単語数を表示したいような場合は、関数で対応することもできます(単語数が少ない場合に適当な操作)。 A2セルに英文を入力します(20単語までの数式例)。 B2セルに以下の式を入力して下方向に(B21セルまで)オートフィルします(出現単語をセルに分割)。 =LEFT(TRIM(A2),FIND(" ",SUBSTITUTE(TRIM(A2),"."," "))-1) C2セル以下に重複のない単語の一覧を表示します。 =INDEX(B:B,SMALL(INDEX((MATCH($B$2:$B$21&"",$B$2:$B$21,0)<>ROW($B$2:$B$21)-1)*1000+ROW($B$2:$B$21),),ROW(A1)))&"" D2セル以下にその個数を表示します。 =IF(C2="","",COUNTIF(B:B,C2)) 英単語をAaアルファベット順に並べ替えたいなら、「重複なし」と「個数」のセル範囲を選択してコピーし、どこかの空白セルを選択して、右クリック「形式を選択して貼り付け」で「値」貼り付けして、そのまま「重複なし」の列を基準に並べ替えしてください。 少しノウハウが必要ですが、この操作をマクロの記録で記録すれば、最終結果の一覧表の作成を自動化することもできます。
その他の回答 (4)
- MackyNo1
- ベストアンサー率53% (1521/2850)
>大文字小文字は同じあつかいで、長文中のすべての単語の出現数のカウントが目的です。 この場合なら、以下のような手順が最も簡便な操作です。 A列の列幅を狭めてから、改行を含む長文のテキストをA1セルに貼り付け(2行目以降にも文章が挿入される)、文書全体のセルでフィルの文字の割り付け操作を行い、すべての単語をセルに分割します。 次に、「.」、「?」、「!」など単語以外の部分を削除します。 具体的にはCtrl+Hで置換ダイアログを出し、特殊文字の「?」と「!」については、検索する文字列の欄に「~?」のように?マークの前にチルダを挿入して「すべて置換」します。 このようにして、すべて単語に分割したセルでフィルタオプションの設定を行い、「指定した範囲」に重複のないデータを抽出します。 この範囲を並べ替え、COUNTIF関数でそれぞれの単語の数を求めます。
- MackyNo1
- ベストアンサー率53% (1521/2850)
No2の回答の補足と訂正です。 D2セルに入力する式を忘れていましたね。 D2セルには以下の数式を入力してください。 =IF(B2="","",COUNTIF(B:B,B2)) 私の回答はExcel2007で回答しましたが、例えば2003なら「両端揃え」は「編集」「フィル」「文字の割り付け」になります(フィルの機能を使って列幅を狭くすることが英文を単語に分割することができる裏技です)。 またデータタブの「詳細設定」は2003では「データ」「フィルタ」「フィルタオプションの設定」になります。 操作の目的が良くわからないので、今回の回答はフィルとフィルタオプションの設定を利用する1つの操作例を示しましたが、実際に解析したい文章や(例えば、文章が長文か短文か、長文中のすべての単語の出現数のカウントが目的なのか、特定の単語の出現数が必要なのが)、最終的にどのような形でデータ処理したいのか(文頭の大文字単語と文中の小文字は同じ扱いにするか否か)などによって、もっと合理的な操作や別の関数を使う必要がある場合も考えられます。 したがって、このようなご質問では、ご使用のバージョンはもちろんの事ですが、操作の目的も含めて説明されると、より的確な回答が得られると思います。
- MackyNo1
- ベストアンサー率53% (1521/2850)
提示された数式では、単語数を正確にカウントすることはできません。 例えば、文中に「Is」など大文字の「I」が含まれている場合、「I」のカウントに含まれてしまいます。 もちろん、例文の最後が「Japan」ではなく「Japanese」の場合も、「Japan」でカウントしてしまいます。 このようなケースでは、以下のような操作でセル中の単語の数をカウントすることができます。 ただし、バージョンによって大きく操作が異なりますので、ひとまずExcel2007で説明します。 添付画像のようにD2セルには以下の数式を入力して下方向にオートフィルしておきます。 まず1つの文章中に含まれる単語をB列のようにセルに分割します。 A2セルに入っている文章をB2セルにコピーし、B列の幅を2文字程度の狭い幅に変更してから、B2セルを選択してホームタブの「編集」「フィル」「両端揃え」してすべての単語を1列のセルに分割します。 そのまま、Ctrl+Hで置換ダイアログを出して、検索する文字列に「.」を入力して「すべて置換」します。 そのまま、「データ」「並べ替え」で「現在選択されている範囲を並べ替える」にチェックを入れます。 最後に同じくデータタブの「詳細設定」で「フィルタオプションの設定」にして、リスト範囲を項目名を含めたB列だけのデータにして、「重複するレコードは無視する」にチェックを入れれば完成です。 #Officeソフトはバージョンによって使用できる機能や操作方法が大きく異なりますので、質問の際にはかなr図バージョンを明記するようにしましょう。
- mshr1962
- ベストアンサー率39% (7417/18945)
A1="I want to go to Japan because I like Japan." B1="because" で A1の文字数=LEN($A$1) B1を除いたA1の文字数=LEN(SUBSTITUTE($A$1,B1,)) 上記の引き算で、B1に使われた文字数が分かるので B1の文字数=LEN(B1) で割ることで使用回数を求めています。 正し、注意が必要で文字数の少ない単語が他の単語に含まれる場合は、 前後のスペースを含めて検索しないと余計にカウントされることがあります。 例 I Island → B1="I " で検索 other mother → B1=" other" で検索
補足
大変失礼いたしました。 バージョンは2007です。 大文字小文字は同じあつかいで、 長文中のすべての単語の出現数のカウントが目的です。 的確なご指摘ありがとうございます。