- ベストアンサー
Excel 指定した範囲内に、特定の単語が何回出現するか数える
アンケートの集計をExcelでやっておりまして、複数回答が可能な質問の集計に困っております。 選択肢は「今年」「来年」「再来年」「未定」。 データは以下のように並んでいる状態で、選択肢各々の数をカウントしたいと思います。 A1: 今年 来年 A2: 来年 A3: 来年 再来年 A4: 再来年 : : 「今年」や「未定」、また「再来年」の「再」はユニークな文字列または文字なので、countifを使って求めることができておりますが、 「来年」の数をどのように求めるか、非常に悩んでおります。 検索を駆使して色々調べたのですが数日悩んでも無理でした。。 どなたかお助けいただけないでしょうか。よろしくお願いします!
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
http://support.microsoft.com/kb/213889/ja この方法で可能です。 =SUM(LEN(A1:A7)-LEN(SUBSTITUTE(A1:A7,"来年","")))/LEN("来年")-SUM(LEN(A1:A7)-LEN(SUBSTITUTE(A1:A7,"再","")))/LEN("再") と入力後CTRL+SHIFT+ENTERを押して確定して下さい。
その他の回答 (5)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんにちは。 区切り文字が、スペースのようですが、これらは、仮に、「,」「、」「 (全角スペース)」などは、全部、置換してひとつに統一してしまうことも以下でしたら可能です。その上で、全部、それぞれに分けてから、カウントとしています。内部の確保したデータは、それぞれひとつになっています。 '標準モジュール Function SplitCount(rng As Range, findWd As String) As Long Dim mData() As String Dim c As Variant Dim buf As Variant Dim v As Variant Dim i As Long Dim k As Long 'カウント変数 For Each c In rng '全角スペースは、半角に置換 buf = Replace(c.Value, Space(1), Space(1), , , vbTextCompare) buf = Split(buf, Space(1)) For Each v In buf If v <> "" And v <> " " Then ReDim Preserve mData(i) mData(i) = Replace(v, Space(1), "") If mData(i) Like findWd Then k = k + 1 i = i + 1 End If Next v Next c SplitCount = k End Function なお、ワークシートは、SplitCount(範囲,検索文字) とします。 検索文字については、"*年" とワイルドカードは使えます。
補足
ありがとうございます、マクロですね。 わざわざこのようにご丁寧に例を作っていただき恐縮です。 できれば、ファイルの管理上(マクロ等を使用しない他の人間も使うので)Excel関数だけで解決したかったのですが、やはりこれはもうこの域の問題なのでしょうか。 どうしても解決しない場合、使用させていただくかもしれません。 本当にありがとうございました。
エクセル2002ですが、質問文の例で試しましたが、 =COUNTIF(A1:B5,"来*") は「3」となり「5」とはなりませんでした。 =COUNTIF(A2:B6,"再*") は「2」です。 これだと、セルの頭からチェックしてますね。
補足
ありがとうございます。 はい、一つのセル内で複数回出てくる文字列を、さらに範囲内全体でいっぺんにカウントしたいので、なんとなくムリそうですね。。。
- nobu-
- ベストアンサー率33% (31/93)
本来の解決法とは思えませんが、取りあえず以下の方法ではでうでしょうか?(データがE7からE10に入っているとして) =COUNTIF(E7:E10,"* 来年")+COUNTIF(E7:E10,"来年")+COUNTIF(E7:E10,"来年 *") 見当違いであったらすみません。
補足
ありがとうございます! ただしく集計できたようです! 思いつきませんでした。。すばらしいです。 もし可能であれば「指定した範囲内から特定の文字列の出現回数を数える」方法を使って、集計する方法があれば知りたいので、 しばらく締め切らずに置かせていただきます。 指定した範囲内において、 「来年」の出現回数 - 「再」の出現回数 ができたら理想的です。 Microsoftのサイトに以下のようなものを見つけたのですが、 http://support.microsoft.com/kb/213889/ja この「例 1: テキスト範囲の出現する文字列の数をカウントします。」の例題が、その通りにならず、「#VALUE!」エラーが出てしまいます。 こうした方法が使えたらよかったのですが。。。 すみません。
- mu2011
- ベストアンサー率38% (1910/4994)
別シートにコピー後、再来年を一意文字列(仮に再年)に編集→置換後に「今年」「来年」「再年」「未定」で計数する方法は駄目でしょうか。
補足
ありがとうございます。 その方法が可能であれば実行したいのですが(その方法であればやり方は解ります)、色々な制約があり、回答内容に手を加えずにやらなければならないのです。 また、このようなケースがこの設問だけではなく、また集計対象が膨大なため、手をかけずに集計できる方法があればと思いました。
- pbforce
- ベストアンサー率22% (379/1719)
来と再を検索して来から再を引くのはダメでしょうか?
補足
ありがとうございます、まさにその方法を式で表したいのですが、これがなかなかできないのでございます。。。 おわかりになりますでしょうか?
補足
pbforceさん、たびたびの回答ありがとうございました! ずはらしいです、できました! 「入力後CTRL+SHIFT+ENTERを押して確定」は勉強不足でした。 検索したら、「配列数式」との情報が色々でてきますね。 調べておきます。 解決しました。大変ありがとうございました!