- 締切済み
エクセルでのアンケート表の集計方法
こんにちは。 リサーチ部門で仕事をしているのですが、この度ちょっとしたアンケートをチェックボックス形式でエクセルを利用して作成しました。 メールを利用して友人を中心に回答を収集したのですが、思った以上(100に以上)に集まり、プリントアウトして集計するにはおおくなりすぎました。 どなたか複数のエクセルファイルを同時に集計できる方法をご存知の方、教えて下さい。 ちなみに、設けたチェックボックスはどこのセルにもリンクはさせてません。
- みんなの回答 (2)
- 専門家の回答
みんなの回答
- nishi6
- ベストアンサー率67% (869/1280)
もう終わったかな・・・。参考に作ってみました。 アンケート用のブックの管理方法がわかりませんので次のような想定をしています。 1.決まったフォルダに全アンケート用ブックが保存されている。 2.アンケート用ブックのSheet1のみにチェックボックスがある。 3.チェックボックスはコントロール ツールボックスのものを使った。 4.各チェックボックスの名前はCheckBox1、CheckBox2・・・となっている。 5.アンケート用ブックの拡張子は.xls 一部書き換えて下さい。 6.anCount(3)の3は実際のチェックボックスの数にします。 7.anPath = "C:\・・・・・・・・・・" は全アンケート用ブックが保存されているドライブとフォルダです。 集計結果をA列に書き出します。標準モジュールに貼り付けます。 Public Sub Syukei() Dim anPath As String 'アンケート用ブックの保存フォルダ Dim anFilename As String 'アンケート用ブック名 Dim anCount(3) As Integer 'アンケート集計用配列 '<=== 実際のチェックボックスの個数にします Dim cnt As Integer 'カウンタ Dim anCheckBox As OLEObject 'チェックボックス Application.ScreenUpdating = False '画面更新停止 anPath = "C:\・・・・・・・・・・" '<=== 実際の保存ドライブ、フォルダを書きます。 anFilename = Dir(anPath & "\" & "*.xls") While Len(anFilename) > 0 '*** チェックボックスのチェックを集計 *** Workbooks.Open anPath & "\" & anFilename cnt = 0 With Workbooks(anFilename).Worksheets("Sheet1") For Each anCheckBox In .OLEObjects If Left(anCheckBox.Name, 8) = "CheckBox" Then cnt = cnt + 1 anCount(cnt) = anCount(cnt) + Abs(anCheckBox.Object.Value) End If Next End With Workbooks(anFilename).Close '******* シートの集計終了 ******* anFilename = Dir '次のブック Wend Application.ScreenUpdating = True '画面更新復活 '集計結果を書く For cnt = 1 To UBound(anCount()) Range("A" & cnt) = "ChechBox" & Right(" " & cnt, 2) & "=" & anCount(cnt) Next End Sub
- i-touch
- ベストアンサー率40% (170/415)
VBAでできますが、ちょっと大変です。 1:集計用のエクセルブックを作る <以下はVBAで作りこみます> 2:同じフォルダにあるエクセルブック(ファイル)のリストを作る (集計用のブックファイルは除きます) 3:ファイルリストを参照して、アンケートのブックを1つずつ開く 4:開いたシートにあるチェックボックスの値を、集計用のブックのシートに移す (If Worksheets("sheet1").CheckBox1.Value = True Then などで) <3,4を全部のブックで繰り返し> 複数のブックのセルから集計するのは作ったことがあります。 チェックボックスの値も取得はできるので、同じようにできると思います。 100件ほどなら(チェックボックスの数が少なければ)手作業のほうがいいかもしれませんね。