• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:Excelの質問です!)

Excelのアンケート結果分析方法

このQ&Aのポイント
  • Excelを使用してアンケート結果を分析する方法について教えてください。
  • アンケートで4つの選択肢から選んでもらう設問を20問用意しています。Excelの関数を使って、特定の選択肢を選んだ人数を数える方法を教えてください。
  • 設問の回答はS列からAL列までの2行目から51行目まであります。具体的な関数式を教えていただけると助かります。

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

  • ベストアンサー
  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.3

ご利用のエクセルのバージョンが不明のご相談ですが、最近のエクセルを使っているなら >たとえば(1)で「常にある」or「時々ある」を選んだ人で、(2)で「常にある」or「時々ある」 =COUNTIFS(S2:S51,"*ある",T2:T51,"*ある") のように計算することも出来ます。 たとえば次の数式をT61セルに =COUNTIFS($S2:$S51,"*ある",T2:T51,"*ある") 置いてこれを右向けにコピーすると、(1)と(2)、(1)と(3)、(1)と(4)…のように計算結果を並べることも出来ますね。 #具体的な関数式をまるっと教えて欲しいときは、「具体的にあなたは何を計算したいのか」をしっかり丁寧に質問するようにしてみて下さい。

takaaki245
質問者

お礼

ご教授ありがとうございました! 無知な私にも分かりやすい式であったこともあり ベストアンサーにさせていただきました。 無事データの整理が完了しました! わざわざお時間割いていただいたこと感謝申し上げます!

その他の回答 (6)

  • bunjii
  • ベストアンサー率43% (3589/8249)
回答No.7

やりたいことの全容が見えません。 設問1、設問2、・・・・、設問20としてカウントする条件を明確に説明しないと適切な数式を提示できません。 >たとえば(1)で「常にある」or「時々ある」を選んだ人で、(2)で「常にある」or「時々ある」を選んだ人の数をかぞえる この条件では設問1(S列)と設問2(T列)について述べていますが、設問3(U列)~20(AL列)との関連をどうしますか? 設問3以降は関係なしとすれば次の数式で良いと思います。 =COUNTIFS(S2:S51,"*ある",T2:T51,"*ある") 検索文字列の"*ある"に該当する文字データとして"常にある"と"時々ある"がカウントされます。 "*"はワイルドカードなので質問のようなときに省略形の検索に便利です。 >(1)-(20)まですべての組み合わせでやるので どのようなことを考えているかが分かりませんので前述の数式を変形して試されると良いでしょう。

takaaki245
質問者

お礼

説明が下手くそですいません。。 ご指摘のやり方でなんとかデータの整理が出来ました。 順番の都合上ベストアンサーではありませんでしたが 同様にお礼申し上げます!

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.6

すみません! きのう、いらんことをしていました。 こちらが正解です。 乱数で「常にある」などを書き込む部分を削除しましたので、本番のファイルで使えるはずですが、念のため、本番のファイルは別名保存しておき、万一のために備えてから実行してみてください。 なお、やっていることはきのうと同じですので、私が根本的に勘違いしていれば、言ってください。 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

takaaki245
質問者

お礼

ご教授ありがとうございました。 マクロ組んでみたのですが なかなか扱いきれなかったので もっとExcel勉強します!

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.5

必ず、最後まで説明を読んでから、マクロを実行してください。 絶対に、いきなり実際のエクセルファイルで実行してはいけません。 せっかく作成されたデータが上書きされてしまいます。 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)
回答No.4

 要するに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)))

takaaki245
質問者

お礼

ご教授ありがとうございました! 今回は他の方の案を採用させていただきましたが わざわざお時間割いていただいたこと感謝申し上げます!

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.2

例えば、「S2」セルですが、「常にある」「時々ある」「あまりない」「全くない」は、文字で入っているのですか? それとも「常にある」=1、「時々ある」=2、「あまりない」=3、「全くない」=4などのように、数字か何かで入っているのですか? それが分からないと、答えられないのですが。

takaaki245
質問者

補足

お手数おかけして申し訳ありません。 文字で各セルには入力されています。

回答No.1

  ピボットテーブルを使いましょう 一発で集計できます  

takaaki245
質問者

お礼

ありがとうございます。 ピボットテーブル調べてみます。 ただ、本当にExcelには疎いので・・・ 理解できなかったら申し訳ありません。

関連するQ&A

専門家に質問してみよう