- 締切済み
エクセルの関数
A、B、C、D、E、F、G、Hというものから2個選んでください。と言うある調査をおこないました。そして組合せの集計をエクセルで集計したいのですが、うまくできません。 個人がどの組合せをしたのかはデータ化してあります。 氏名 ○○○○さん A C ○○○○さん D G ○○○○さん A B ○○○○さん A B ・・・ というふうに200人ぐらいの個人が選択したものがあります。 2つの組合せ AとAの組合せ 0 人 AとBの組合せ 2 人 ・・・ 人数をうまくだしたいのですができません。解説をお願いします。 いま、ifとANDとORを使ってやっています。
- みんなの回答 (6)
- 専門家の回答
みんなの回答
E F G H I J K L M 1 A B C D E F G H 2 A 3 3 5 1 4 7 3 1 3 B 1 5 4 2 2 4 4 3 4 C 2 2 5 1 2 1 3 4 5 D 3 1 8 4 4 0 4 2 6 E 4 3 3 2 3 3 4 4 7 F 6 2 0 4 4 2 1 3 8 G 5 4 0 4 2 4 2 4 9 H 3 5 2 7 3 4 2 0 1.B列の選択肢として、セル E2 から下方に A、B、 C、…、H を入力 2.C列の選択肢として、セル F1 から右方に A、B、 C、…、H を入力 3.セル F2 に次式を入力して、此れを範囲 F2:M9 に 複写 =SUMPRODUCT(($B1:$B250=$E2)*($C1:$C250=F$1))
- imogasi
- ベストアンサー率27% (4737/17069)
関数ということですが、(ピヴォットテーブル以外は、)トータル的な作業の解決にならないので VBAで一気にやってしまう方法でやってみました。 その意図は 例えばどういう型(AA,AB、・・など)があるかは、別途作業が必要で、SUMPRODUCTやCOUNTIFでは、それは出ないということを言いたい。 もちろん、型を関数を使ってセルに作ることはできます。 そしてそれも下記VBAの中にヒントがありますが。 例データA1:C8(D以下は実行後できるもの) X A A AA AA 1 Y A B AB AB 2 Z A C AC AC 3 U B A AB BD 1 V B D BD DD 1 W C A AC O C A AC P D D DD VBEの標準モジュールに Sub test01() j = 1 d = Range("a65536").End(xlUp).Row '---順序並び統一 For i = 1 To d If Cells(i, "B") < Cells(i, "C") Then Cells(i, "D") = Cells(i, "B") & Cells(i, "C") Else Cells(i, "D") = Cells(i, "C") & Cells(i, "B") End If Next i '----パターンを抽出 For i = 1 To d MsgBox WorksheetFunction.CountIf(Range(Cells(1, "D"), Cells(i, "D")), Cells(i, "D")) If WorksheetFunction.CountIf(Range(Cells(1, "D"), Cells(i, "D")), Cells(i, "D")) = _ 1 Then Cells(j, "E") = Cells(i, "D") j = j + 1 End If Next i '---パターンの件数カウント For i = 1 To j - 1 Cells(i, "F") = WorksheetFunction.CountIf(Range(Cells(1, "D"), Cells(d, "D")), Cells(i, "E")) Next i End Sub を貼り付けて、実行する。 結果はE,F列の通り。 やっていることは (1)例えばAB、BAをABに統一。 (2)AB、ACのようなパターンを取り出す。 (3)パターンについて出現頻度をカウント ワークシート関数COUNTIFを上記VBAでも使うように、しました。
- bari_saku
- ベストアンサー率17% (1827/10268)
No.2です。わかりにくい表現になってしまいましたので、補足します。 条件1がA、条件2がBの場合は =SUMPRODUCT((B1:B200="A")*(C1:C200="B")) 条件1がE、条件2がFの場合は =SUMPRODUCT((B1:B200="E")*(C1:C200="F")) こんな感じになります。
作業列を使った方法で D1に =B1&C1 と入力し、下方向へ複写 あとは、COUNTIFでカウントできますね 逆に入力(AとBは「AB」BとAは「BA」) されていることもあるのであれば COUNTIFのときに 足し算すればよろしいかと思います。
- bari_saku
- ベストアンサー率17% (1827/10268)
名前:A列 条件1:B列 条件2:C列 データ行1~200 とすると、 =SUMPRODUCT((B1:B200="○")*(C1:C200="●")) ○に条件1のアルファベット、●に条件2のアルファベットが入ります。
- toshi_ho
- ベストアンサー率42% (71/168)
ピボットテーブルを使えば簡単にできると思います。