• ベストアンサー

カンマで区切った数値をCOUNTIFで数えたい

エクセルでアンケート集計をしていまして、一つのセルに選択肢番号をを入力し、複数回答の場合はカンマで区切って入力してあります。具体的には複数回答の場合は「1,2,5」などです。複数でない回答もあるので単純に「1」などのように一つの数字しか入力していないセルも混在しています こうして入力したエクセルデータで、それぞれの選択肢の数をCOUNTIFで数えようとしましたが、例えば「1」の数を数えようとして検索条件"*1*"でも”1”にしても、正確な数がカウントできません。 きっと設定方法が違うと思うのですが、初心者なため、右往左往しています。アドバイスをお願いします。

質問者が選んだベストアンサー

  • ベストアンサー
  • ham_kamo
  • ベストアンサー率55% (659/1197)
回答No.1

Excelのヘルプによると、 Excel でワイルドカード文字や比較演算子を使って目的のデータの一部 (先頭または末尾の文字列、含まれる文字列) を検索条件として指定する場合、文字列値のみが検索され、数値データは検索されません。 ということらしいので、 (1)「1,2,5」と入力されたセル→文字列 (2)単純に「1」と入力されたセル→数値 として入力され、(1)のセルだけがカウントされているものと思われます。 対策としては、たとえば回答がA1:A10の範囲にあるとすると、 B1に =TEXT(A1,"@") と入力してA1を文字列に変換し、そのセルを下にコピーして列全体を文字列に変換し、 =COUNTIF(B1:B10,"*1*") とカウントしてみてはいかがでしょうか。

wakanet
質問者

お礼

早速のアドバイスありがとうございました 原因がわかってすっきりしました! でも、やまりひとつひとつ、変換しなきゃいけないようですね。 参考になりました。

その他の回答 (2)

  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.3

こんばんは。 COUNTIF でするなら、このようになるはずです。 =SUMPRODUCT(COUNTIF(A1:A10,{"1,*","*,1,*","*,1","1"})) ただし、これは、リテラル値(直接の数字の代入)しか受け付けてくれないようです。 ただ、私個人で一回きりでしたら、#2さんの方法を使います。 別シートに、データ-区切り位置で、コンマ切り分けして、それで、COUNTIF に掛けます。 たびたび同じことをするなら、ユーザー定義関数を使います。 以下のようにしたら良いかと思います。原理は、全部、コンマ付き数字を、分解させています。一応、参考までです。こちらは、そのまま、COUNTIFと同様に使えますが、カウントするのは数字のみです。 '標準モジュール Function CommaCountIF(rng As Range, arg As Variant) As Long 'カンマ付き数字のカウントイフ Dim mData() As Double Dim c As Variant Dim v As Variant Dim i As Long Dim j As Long Dim buf As Variant Dim cnt As Long i = -1 For Each c In rng  If InStr(c.Value, ",") > 0 Then   buf = Split(c.Value, ",")   For Each v In buf    If IsNumeric(v) Then      i = i + 1     ReDim Preserve mData(i)      mData(i) = v    End If   Next v  ElseIf IsNumeric(c.Value) Then   i = i + 1   ReDim Preserve mData(i)   mData(i) = c.Value  End If Next c   For j = LBound(mData()) To UBound(mData())    If mData(j) = arg Then     cnt = cnt + 1    End If  Next j CommaCountIF = cnt End Function

wakanet
質問者

お礼

アドバイスありがとうございます 。。。ユーザー定義関数というのは初めてみました。 何せ初心者なので、使い方もわかりません。 もうちょっと、勉強してトライしたいと思います。 助かりました

  • imogasi
  • ベストアンサー率27% (4737/17070)
回答No.2

2-3日前に、私が答えた質問そっくりです。 http://gtubo.gpoint.co.jp/qa2660075.htmlれつ その場合は私の提案は、カンマなしの入力を(省エネの見地から)、提案しました。 今回はカンマ区切りなら少しやりやすい メニューのデーター区切り位置ーカンマや・・次ぎへ・・・完了 これで選択肢番号が列ごとに、各セルに分離されます。 あとFREQUENCY関数で、各番号の出現頻度を出してます。

wakanet
質問者

お礼

回答ありがとうございました。 ただ、今回別途データ集計会社に、複数回答はカンマつきという入力オーダーがあったので、できるかぎりカンマなしの方法があればと思い、尋ねた次第です。

関連するQ&A