[[20160531152522]] 『一つのセルに複数回答があった場合のカウント方法』(りんご) ページの最後に飛ぶ

[ 初めての方へ | 一覧(最新更新順) | 全文検索 | 過去ログ ]

 

『一つのセルに複数回答があった場合のカウント方法について』(りんご)

すみません。教えてください。
ちょっとつまずいておりまして、、

設問は下記のような感じです。
                好きな果物(複数回答)
男女  10代20代30代  リンゴ もも ぶどう.......
12   1  2  3    1  2  3

回答で出てくるエクセルデータは↓こんな感じです。数字は○数字です
COUNTIFでいけるかと思ったのですがうまくいかず、
SUMPRODUCTでいけるかと思ったのですが複数の場合集計からはじかれてしまいます。

A列      B列         C列
1       2         1 2
2       1         2 3
1       3         2

集計したいのでどなたか数式を教えてください。

< 使用 Excel:Excel2010、使用 OS:WindowsXP >


1項目に複数回答された場合、どう扱いたいですか?

1つだけ有効にしたいならば、Left関数でも使って、1文字だけを対象にすればよろしいかと。

複数全て有効(つまり複数人としてカウント)にしたい場合、まずオートフィルタをかけます。
そしてC列の選択肢から複数のものだけ選択して表示。出てきた行を範囲コピーし、行末に貼付。
数は少ないと思いますので、後はC列の値を編集していきましょう。

元データは直したくないが複数カウントしたい場合、一致で見るのではなく、Find関数等で数字が含まれていたらカウント、とか。
(???) 2016/05/31(火) 15:53


ありがとうございます。

複数人すべて有効としてカウントしたいのです。

人数は1万件分のデータを想定しています。

2/3の人が2つの果物を好きな場合集計合計数字は1万6千になるかと思います。

この複数回答というものが10件程度あり(選択項目が10以上にわたるものもあります。)

年代別・男女別でデータ化し、図・グラフへと落とし込みたいと考えています。
(りんご) 2016/05/31(火) 16:16


 ○囲み数字なら

 =COUNTIF(範囲,"*○*")

 で、カウントできるんでないの?
 
(GobGob) 2016/05/31(火) 16:32

COUNTIFの使い方が間違っているのかもしれないのですが、下記数式ですと3番目の「好きな果物」しかカウントしてきてくれないようなのです。

男女別かつ 年代別かつ 好きな果物の集計にしたいのです。

「男性」かつ「40歳代」で「もも」が好きな人
=COUNTIF(B2:B10001,"*?@*")+COUNTIF(C2:C10001,"*?C*")+COUNTIF(D2:D10001,"*?A*")

「男性」かつ「40歳代」で「もも」と「イチゴ」が好きな場合はどうしたらよいですか?

列が崩れてしまって見にくいと思うのですが、エクセルイメージは下記のとおり集計できればと思っています。

	10代		20代		30代		40代		50代		60代		70代		80代		男女別		計
	男	女	男	女	男	女	男	女	男	女	男	女	男	女	男	女	男	女	全体
りんご	53人	45人	33人	62人	21人	53人	45人	33人	62人	21人	33人	62人	21人	33人	45人	33人	313人	342人	655人
もも	183人	123人	42人	48人	48人	124人	123人	42人	48人	48人	42人	48人	48人	42人	123人	42人	657人	517人	1,174人
ぶどう	120人	25人	180人	110人	95人	101人	25人	124人	110人	95人	180人	110人	95人	180人	25人	180人	830人	925人	1,755人
なし	30人	21人	12人	12人	56人	30人	21人	12人	12人	21人	12人	12人	21人	12人	21人	12人	185人	132人	317人
キウイ	21人	30人	56人	25人	68人	21人	30人	56人	25人	25人	56人	25人	25人	56人	30人	56人	311人	294人	605人
イチゴ	95人	210人	111人	125人	120人	110人	142人	124人	210人	120人	121人	210人	120人	121人	112人	105人	1,031人	1,125人	2,156人


 To りんご さん

 回答ではありません。

 レスは、編集で付け加えるのではなく、下のコメント欄に記述してアップしてくださいね。

(β) 2016/05/31(火) 18:10


すみません。アドバイスありがとうございます。

COUNTIFの使い方が間違っているのかもしれないのですが、下記数式ですと3番目の「好きな果物」しかカウントしてきてくれないようなのです。

男女別かつ 年代別かつ 好きな果物の集計にしたいのです。
(ちなみに( )内数字は○数字です)

「男性」かつ「40歳代」で「もも」が好きな人
=COUNTIF(B2:B10001,"*1*")+COUNTIF(C2:C10001,"*4*")+COUNTIF(D2:D10001,"*2*")

「男性」かつ「40歳代」で「もも」と「イチゴ」が好きな場合はどうしたらよいですか?

列が崩れてしまって見にくいと思うのですが、エクセルイメージは下記のとおり集計できればと思っています。

	10代		20代		30代		40代		50代		60代		70代		80代		男女別		計
	男	女	男	女	男	女	男	女	男	女	男	女	男	女	男	女	男	女	全体
りんご	53人	45人	33人	62人	21人	53人	45人	33人	62人	21人	33人	62人	21人	33人	45人	33人	313人	342人	655人
もも	183人	123人	42人	48人	48人	124人	123人	42人	48人	48人	42人	48人	48人	42人	123人	42人	657人	517人	1,174人
ぶどう	120人	25人	180人	110人	95人	101人	25人	124人	110人	95人	180人	110人	95人	180人	25人	180人	830人	925人	1,755人
なし	30人	21人	12人	12人	56人	30人	21人	12人	12人	21人	12人	12人	21人	12人	21人	12人	185人	132人	317人
キウイ	21人	30人	56人	25人	68人	21人	30人	56人	25人	25人	56人	25人	25人	56人	30人	56人	311人	294人	605人
イチゴ	95人	210人	111人	125人	120人	110人	142人	124人	210人	120人	121人	210人	120人	121人	112人	105人	1,031人	1,125人	2,156人

(りんご) 2016/05/31(火) 18:19


 > 男女別かつ 年代別かつ 好きな果物の集計にしたいのです。

 ↑ こういうのは COUNTIF じゃなく COUNTIFS

 それと、一つのセルに複数の数字が入るのは「好きな果物」(C列?)だけでしょ?
 性別や年代のところにワイルドカード「*」をつける必要なんかないですよ。

 あと、数式に直接丸数字を書いてたら、セル一つ一つ直していくことになるのでは?
 セル参照にした方がいいです。

 ↓ あくまで例ですが(A列・・性別、B列・・年代、C列・・好きな果物)
   1行目・・年代、2行目・・性別 ※( )の数字は丸数字に読み替え

	E	F	G	H	I
1		(1)		(2)	
2		(1)	(2)	(1)	(2)
3	(1)	1	0	1	1
4	(2)	1	0	1	1
5	(3)	1	0	1	1

 F3 =COUNTIFS($A$2:$A$100,F$2,$B$2:$B$100,F$1,$C$2:$C$100,"*"&$E3&"*")
 G3 =COUNTIFS($A$2:$A$100,G$2,$B$2:$B$100,F$1,$C$2:$C$100,"*"&$E3&"*")

 F3とG3を選択して右と下にコピー

 E列と1〜2行目の表示は表示形式で変えるなりなんなり。
 例)F1セルの表示形式〜ユーザー定義 ;;;"10代"

 データ件数がけっこう多いので数式が重くなるかもしれないけど、
 それはそちらで確認してください。
(笑) 2016/05/31(火) 18:34

 集計表の1行目、男女どちらにも年代を入れておけば

	E	F	G	H	I
1		(1)	(1)	(2)	(2)
2		(1)	(2)	(1)	(2)
3	(1)	1	0	1	1
4	(2)	1	0	1	1
5	(3)	1	0	1	1

 F3 =COUNTIFS($A$2:$A$100,F$2,$B$2:$B$100,F$1,$C$2:$C$100,"*"&$E3&"*")

 これを右と下にコピー

 参考まで。
(笑) 2016/05/31(火) 18:43

ごめんなさい。本当に数式がわからなくて。。。。
見よう見まねで数式を入れてみたのですが全然うまくいきません。ま、私がとんちんかんなことをしているからにほかありませんが。。。。

男性かつ 20代かつ2を選んだ場合の数式
=COUNTIFS($B$2:$B$10001,B$1,$C$2:$C$10001,C$1,$K$2:$K$10001,"*"&2&"*")

ちなみにこのように落とし込まれたデータを引っ張っていきたいのです。

     A列  B列   C列   D列 
1行目 対象者 男女 年代  設問1
2行目   1   1   3  2 3 5
3行目   2   2  2  1 2 3
4行目   3    1  1  3
5行目   4    2  3  4 6
6行目   5    1  2  5

(りんご) 2016/05/31(火) 19:56


Sub main()
    'Sheets("回答")のA列1行目から下に性別(?@?A)をセット
    'Sheets("回答")のB列1行目から下に年代(?@?A?B?C?D?E?F?G)をセット
    'Sheets("回答")のC列1行目から下に果物名(?@?A?B?C?D?E)をセット
    'Sheets("集計")に集計する
    Dim dt(2, 8, 6) As Long, c As Range, x1 As Integer, x2 As Integer, x3 As Integer
    For Each c In Sheets("回答").UsedRange.Columns("A").Cells
        For i = 1 To Len(c.Offset(, 2).Value)
        dt(sconv(c.Value), sconv(c.Offset(, 1).Value), sconv(Mid(c.Offset(, 2).Value, i, 1))) = 1 + Val(dt(sconv(c.Value), sconv(c.Offset(, 1).Value), sconv(Mid(c.Offset(, 2).Value, i, 1))))
        Next i
    Next c
    With Sheets("集計")
        .Cells.ClearContents
        .Range("A3").Resize(6) = Application.WorksheetFunction.Transpose(Array(1, 2, 3, 4, 5, 6))
        .Range("B1").Resize(, 16) = Array(1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8)
        .Range("B2").Resize(, 16) = Array(1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2, 1, 2)
            For Each c In .Range("B3:Q8")
            x1 = .Cells(2, c.Column).Value
            x2 = .Cells(1, c.Column).Value
            x3 = .Cells(c.Row, 1).Value
            c.Value = dt(x1, x2, x3)
            Next c
        .Range("A3").Resize(6) = Application.WorksheetFunction.Transpose(Array("りんご", "もも", "ぶどう", "なし", "キウイ", "イチゴ"))
        .Range("B1").Resize(, 16) = Array("十代", "", "二十代", "", "三十代", "", "四十台", "", "五十代", "", "六十代", "", "七十代", "", "八十代", "")
        .Range("B2").Resize(, 16) = Array("男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女", "男", "女")
    End With
End Sub
Function sconv(arg As String) As Integer
    sconv = Array(1, 2, 3, 4, 5, 6, 7, 8)(InStr(1, "?@?A?B?C?D?E?F?G", arg, 1) - 1)
End Function
(mm) 2016/06/01(水) 09:52

"*"&○&"*" ではなく、"*○*" では?
(???) 2016/06/01(水) 11:40

 > =COUNTIFS($B$2:$B$10001,B$1,$C$2:$C$10001,C$1,$K$2:$K$10001,"*"&2&"*")

 B$1 て「男女」? C$1 て「年代」?
 なんでB列とC列の検索条件がこんなものになるんですかね?

 いきなり「K列」なんか出てきましたけど、何ですか、K列って?

  "*"&2&"*" ← をセル参照にしないのはなぜ?
  
 ↓ が集計表だってことはわかってます?(「1」とか「0」は関係ないので無視してくださいよ) 

 >	E	F	G	H	I
 > 1		(1)	(1)	(2)	(2)
 > 2		(1)	(2)	(1)	(2)
 > 3	(1)	1	0	1	1
 > 4	(2)	1	0	1	1
 > 5	(3)	1	0	1	1
 
 実際の集計表がどこにあるのか知りませんが、COUNTIFS の検索条件はその集計表の丸数字のセル番地にするんです。
 言ってることがわからなかったら実際の集計表がどこにあるのか書いてください。

 もう見てないような気もするけど。
(笑) 2016/06/01(水) 14:01

ようやく数式できたようです。
ありがとうございました。
(りんご) 2016/06/01(水) 18:05

コメント返信:

[ 一覧(最新更新順) ]


YukiWiki 1.6.7 Copyright (C) 2000,2001 by Hiroshi Yuki. Modified by kazu.