- ベストアンサー
Excelのアンケート結果分析方法
- Excelを使用してアンケート結果を分析する方法について教えてください。
- アンケートで4つの選択肢から選んでもらう設問を20問用意しています。Excelの関数を使って、特定の選択肢を選んだ人数を数える方法を教えてください。
- 設問の回答はS列からAL列までの2行目から51行目まであります。具体的な関数式を教えていただけると助かります。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
ご利用のエクセルのバージョンが不明のご相談ですが、最近のエクセルを使っているなら >たとえば(1)で「常にある」or「時々ある」を選んだ人で、(2)で「常にある」or「時々ある」 =COUNTIFS(S2:S51,"*ある",T2:T51,"*ある") のように計算することも出来ます。 たとえば次の数式をT61セルに =COUNTIFS($S2:$S51,"*ある",T2:T51,"*ある") 置いてこれを右向けにコピーすると、(1)と(2)、(1)と(3)、(1)と(4)…のように計算結果を並べることも出来ますね。 #具体的な関数式をまるっと教えて欲しいときは、「具体的にあなたは何を計算したいのか」をしっかり丁寧に質問するようにしてみて下さい。
その他の回答 (6)
- bunjii
- ベストアンサー率43% (3589/8249)
やりたいことの全容が見えません。 設問1、設問2、・・・・、設問20としてカウントする条件を明確に説明しないと適切な数式を提示できません。 >たとえば(1)で「常にある」or「時々ある」を選んだ人で、(2)で「常にある」or「時々ある」を選んだ人の数をかぞえる この条件では設問1(S列)と設問2(T列)について述べていますが、設問3(U列)~20(AL列)との関連をどうしますか? 設問3以降は関係なしとすれば次の数式で良いと思います。 =COUNTIFS(S2:S51,"*ある",T2:T51,"*ある") 検索文字列の"*ある"に該当する文字データとして"常にある"と"時々ある"がカウントされます。 "*"はワイルドカードなので質問のようなときに省略形の検索に便利です。 >(1)-(20)まですべての組み合わせでやるので どのようなことを考えているかが分かりませんので前述の数式を変形して試されると良いでしょう。
お礼
説明が下手くそですいません。。 ご指摘のやり方でなんとかデータの整理が出来ました。 順番の都合上ベストアンサーではありませんでしたが 同様にお礼申し上げます!
- Prome_Lin
- ベストアンサー率42% (201/470)
すみません! きのう、いらんことをしていました。 こちらが正解です。 乱数で「常にある」などを書き込む部分を削除しましたので、本番のファイルで使えるはずですが、念のため、本番のファイルは別名保存しておき、万一のために備えてから実行してみてください。 なお、やっていることはきのうと同じですので、私が根本的に勘違いしていれば、言ってください。 Option Explicit Sub abc() Dim c, i, j As Integer Dim q, s As String For i = 19 To 37 c = 0 For j = 2 To 51 q = Cells(j, i).Value s = Cells(j, i + 1).Value If (q = "常にある" Or q = "時々ある") And (s = "常にある" Or s = "時々ある") Then c = c + 1 End If Next j Cells(52, i).Value = c Next i End Sub
お礼
ご教授ありがとうございました。 マクロ組んでみたのですが なかなか扱いきれなかったので もっとExcel勉強します!
- Prome_Lin
- ベストアンサー率42% (201/470)
必ず、最後まで説明を読んでから、マクロを実行してください。 絶対に、いきなり実際のエクセルファイルで実行してはいけません。 せっかく作成されたデータが上書きされてしまいます。 VBAで組んでみましたが、これで良いでしょうか? 私、勘違いしているかも知れません。 エクセルを立ち上げてください。 「Alt(「オルト」と読みます)キーを押しながら、「F11」を押します。 現れた画面のメニューから「挿入」→「標準モジュール」を選びます。 (白い画面が新たに現れます) 下のマクロを新たに現れた白い部分にコピー&ペーストします。 「F5」を押して、実行して、エクセルの画面を見て下さい。 下(行52)に数字が出ていますが、「S52」の数字が「S」列と「T」列を調べて、「S」列が「常にある」または「時々ある」で、かつ「T」列が「常にある」または「時々ある」人の人数です。 従って、最後の列(「AL」列)には、数字はありません。 なお、4行目の「For i = 2 to 51」から18行目の「Next i」までは、乱数を使って「常にある」などを出力しているだけなので、本体ではありません。 マクロが正しく動いているか確かめるためのデータ作成です。 実際のデータで実行される場合は、必ず、この4行目から18行目は削除してください。 Option Explicit Sub abc() Dim i, j, r As Integer For i = 2 To 51 For j = 19 To 38 r = Int(4 * Rnd + 1) Select Case r Case 1 Cells(i, j).Value = "常にある" Case 2 Cells(i, j).Value = "時々ある" Case 3 Cells(i, j).Value = "あまりない" Case 4 Cells(i, j).Value = "全くない" End Select Next j Next i Dim c, n As Integer Dim q, s As String For i = 19 To 37 For j = 20 To 38 If i = j Then Exit For Else c = 0 For n = 2 To 51 q = Cells(n, i).Value s = Cells(n, j).Value If (q = "常にある" Or q = "時々ある") And (s = "常にある" Or s = "時々ある") Then c = c + 1 End If Next n End If Next j If i < 21 Then Cells(52, i + 17).Value = c Else Cells(52, i - 2).Value = c End If Next i End Sub
- kagakusuki
- ベストアンサー率51% (2610/5101)
要するにS列からAL列にかけてのセルの全てに「常にある」か「時々ある」のどちらかの値が必ず入力されている行が、2行目から51行目までの行範囲の中に何行あるのかという事を求めたいという事なのでしょうか? それでしたら次の様な関数を使う事で求める事が出来ます。 =SUMPRODUCT(($S$2:$S$51<>"")*(COUNTIF(OFFSET($S$2:$AL$2,ROW($S$2:$S$51)-ROW($S$2),),"常にある")+COUNTIF(OFFSET($S$2:$AL$2,ROW($S$2:$S$51)-ROW($S$2),),"時々ある")=COLUMNS($S$2:$AL$2)))
お礼
ご教授ありがとうございました! 今回は他の方の案を採用させていただきましたが わざわざお時間割いていただいたこと感謝申し上げます!
- Prome_Lin
- ベストアンサー率42% (201/470)
例えば、「S2」セルですが、「常にある」「時々ある」「あまりない」「全くない」は、文字で入っているのですか? それとも「常にある」=1、「時々ある」=2、「あまりない」=3、「全くない」=4などのように、数字か何かで入っているのですか? それが分からないと、答えられないのですが。
補足
お手数おかけして申し訳ありません。 文字で各セルには入力されています。
- 中京区 桑原町(@l4330)
- ベストアンサー率22% (4373/19606)
ピボットテーブルを使いましょう 一発で集計できます
お礼
ありがとうございます。 ピボットテーブル調べてみます。 ただ、本当にExcelには疎いので・・・ 理解できなかったら申し訳ありません。
お礼
ご教授ありがとうございました! 無知な私にも分かりやすい式であったこともあり ベストアンサーにさせていただきました。 無事データの整理が完了しました! わざわざお時間割いていただいたこと感謝申し上げます!