• ベストアンサー

エクセルでアンケート集計したいので、関数・マクロを教えてください!

宜しくお願い申し上げます。エクセルでアンケート用紙を作りました。セルh3~h35までに各問いの答えが「数字(1~5)」で入っています。約300人分で、各々ankt1~ankt300と名前を付けてエクセルファイルで保存してあります。それからh3に1は何人?h3に2は何人?・・・h35に4は何人?h35に5は何人?と集計したいのです。エクセルの関数・マクロで出来る方法がありましたら、どうぞご教示下さい!≦(._.)≧

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

  • ベストアンサー
  • 135ok
  • ベストアンサー率34% (26/75)
回答No.3

1例です。 別添資料を使い説明します。 A列  B列 問題  回答 A   5 B   3 C   2 D   1 E   3 上記のアンケートを添付のように追加。 次に、表を問題、回答のほかに集計の表を作る。 集計の表は、回答をコピーしたもので、項目を変えただけの物です。 そして、ピボットテーブルで集計を行う。 行に 問題 列に 集計 データ 回答(集計方法は、データの個数) 添付のように集計ができます。 数個のデータで試してみてはいかがでしょうか。

jj1lwi
質問者

お礼

お忙しい中、早速の画像付きの回答、誠にありがとうございました。≦(._.)≧

その他の回答 (3)

回答No.4

私も回答2の方の意見に同意します。 1アンケート1行として1シートにまとめておけば、あとの集計は関数でもピボットテーブルでも使っていろいろできます。 1シートにまとめるマクロとしては、以下が一例です。 Option Explicit Sub Macro1() Dim i As Integer For i = 1 To 300 'ankファイルを開く Workbooks.Open Filename:="<アンケートのあるフォルダへのパス>\ank" & i & ".xls" 'C3:C35の範囲をコピー ActiveSheet.Range("C3:C35").Copy '値、行列の入れ替えのオプションを選択して集計シートへ貼り付け。 ThisWorkbook.Worksheets(1).Range("A" & i).PasteSpecial Paste:=xlPasteValues, _ Operation:=xlNone, SkipBlanks:=False, Transpose:=True 'ankファイルを閉じる ActiveWorkbook.Saved = True ActiveWorkbook.Close Next i End Sub 必要ならば、性別、年齢、職業などの属性も取り出しておけば、分析に役立つはずです。

jj1lwi
質問者

お礼

お忙しい中、早速の回答、誠にありがとうございました。≦(._.)≧

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

300シート分の回答があるってことですよね? 私なら適当な手段を用いて以下のようにフォーマット変換したシートを作ってから作業します。 ・1人1行でA列~AF列まで回答の数字が入っている ・300人なので300行ある あとはcountif関数でA列、B列、C列‥‥AF列まで各々の列にどの回答がいくつあるか数える。 1シートにするには私なら適当なマクロを組むか外部プログラムを作って処理しちゃいますが、手作業でやるなら ・H3~H35を選択してコピー ・貼り付け先を選択して編集→形式を選択して貼り付け→行列を入れ替えるにチェック ・300回 で可能です。

jj1lwi
質問者

お礼

お忙しい中、早速の回答、誠にありがとうございました。≦(._.)≧

  • tttry
  • ベストアンサー率38% (44/114)
回答No.1

セルH3に数字が入っているなら、例えば、 J3のセルに、=if(H3=1,1,0) K3のセルに、=if(H3=2,1,0) L3のセルに、=if(H3=3,1,0) M3のセルに、=if(H3=4,1,0) N3のセルに、=if(H3=5,1,0) と関数を入れて、それぞれ、35行までコピーをすれば、1人の人が何をアンケートで選択したかがわかりますよね。 それぞれ、anakt1からankt300まで作成してから、集計をして見たらどうでしょうか? 一番は、anakt1からankt300を一つのワークシートにデータを入れて、先ほどの関数を使えば良いと思います。 私ならそうします。

jj1lwi
質問者

お礼

お忙しい中、早速の回答、誠にありがとうございました。≦(._.)≧

関連するQ&A

専門家に質問してみよう