プロが教える店舗&オフィスのセキュリティ対策術

アンケートの集計をExcelでやっておりまして、複数回答が可能な質問の集計に困っております。
選択肢は「今年」「来年」「再来年」「未定」。
データは以下のように並んでいる状態で、選択肢各々の数をカウントしたいと思います。

A1: 今年 来年
A2: 来年
A3: 来年 再来年
A4: 再来年
:
:
「今年」や「未定」、また「再来年」の「再」はユニークな文字列または文字なので、countifを使って求めることができておりますが、
「来年」の数をどのように求めるか、非常に悩んでおります。
検索を駆使して色々調べたのですが数日悩んでも無理でした。。
どなたかお助けいただけないでしょうか。よろしくお願いします!

A 回答 (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を押して確定して下さい。

この回答への補足

pbforceさん、たびたびの回答ありがとうございました!
ずはらしいです、できました!
「入力後CTRL+SHIFT+ENTERを押して確定」は勉強不足でした。
検索したら、「配列数式」との情報が色々でてきますね。
調べておきます。

解決しました。大変ありがとうございました!

補足日時:2007/11/30 16:24
    • good
    • 1

こんにちは。



区切り文字が、スペースのようですが、これらは、仮に、「,」「、」「 (全角スペース)」などは、全部、置換してひとつに統一してしまうことも以下でしたら可能です。その上で、全部、それぞれに分けてから、カウントとしています。内部の確保したデータは、それぞれひとつになっています。

'標準モジュール

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関数だけで解決したかったのですが、やはりこれはもうこの域の問題なのでしょうか。
どうしても解決しない場合、使用させていただくかもしれません。
本当にありがとうございました。

補足日時:2007/11/30 15:15
    • good
    • 0

エクセル2002ですが、質問文の例で試しましたが、


=COUNTIF(A1:B5,"来*")
は「3」となり「5」とはなりませんでした。
=COUNTIF(A2:B6,"再*")
は「2」です。
これだと、セルの頭からチェックしてますね。

この回答への補足

ありがとうございます。
はい、一つのセル内で複数回出てくる文字列を、さらに範囲内全体でいっぺんにカウントしたいので、なんとなくムリそうですね。。。

補足日時:2007/11/30 15:07
    • good
    • 0

本来の解決法とは思えませんが、取りあえず以下の方法ではでうでしょうか?(データがE7からE10に入っているとして)



=COUNTIF(E7:E10,"* 来年")+COUNTIF(E7:E10,"来年")+COUNTIF(E7:E10,"来年 *")

見当違いであったらすみません。

この回答への補足

ありがとうございます!
ただしく集計できたようです!
思いつきませんでした。。すばらしいです。

もし可能であれば「指定した範囲内から特定の文字列の出現回数を数える」方法を使って、集計する方法があれば知りたいので、
しばらく締め切らずに置かせていただきます。

指定した範囲内において、
「来年」の出現回数 - 「再」の出現回数
ができたら理想的です。

Microsoftのサイトに以下のようなものを見つけたのですが、
http://support.microsoft.com/kb/213889/ja
この「例 1: テキスト範囲の出現する文字列の数をカウントします。」の例題が、その通りにならず、「#VALUE!」エラーが出てしまいます。
こうした方法が使えたらよかったのですが。。。

すみません。

補足日時:2007/11/30 14:46
    • good
    • 0

別シートにコピー後、再来年を一意文字列(仮に再年)に編集→置換後に「今年」「来年」「再年」「未定」で計数する方法は駄目でしょうか。

この回答への補足

ありがとうございます。
その方法が可能であれば実行したいのですが(その方法であればやり方は解ります)、色々な制約があり、回答内容に手を加えずにやらなければならないのです。
また、このようなケースがこの設問だけではなく、また集計対象が膨大なため、手をかけずに集計できる方法があればと思いました。

補足日時:2007/11/30 14:32
    • good
    • 0

来と再を検索して来から再を引くのはダメでしょうか?

この回答への補足

ありがとうございます、まさにその方法を式で表したいのですが、これがなかなかできないのでございます。。。
おわかりになりますでしょうか?

補足日時:2007/11/30 14:32
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!