以下のようなマクロを必要としておりますが、自力で書くことが出来ず、困っております。
どなたかご教示いただけますか。
(Excel2003を使用しています。)
目的:アンケートの集計
状況:
AAAという名前のフォルダ(C:\AAA)に、BBB1,BBB2,・・・,BBB30、という名前の30個のファイル(C:\AAA\BBB*)が格納されています。
各BBBのファイルには、4択で1~4の数字を選んで回答するアンケートの回答が、
問1 1
問2 3
という体裁で記入されています。(全部で40問)
問○ というセルはA1から縦に、
問に対する回答の数字は、B1から縦に並んでいます。
やりたい事:
BBBとは別のファイルで、30個の回答ファイルから、
問1で1と答えた人は○人、2と答えた人は×人・・・。
問2で1と答えた人は○人、2と答えた人は×人・・・。
という風に、問題毎、選択肢毎の回答数を一挙に集計したいと考えています。
特に分からないポイントとしては、
・別のファイルを指定してデータを持ってくる方法
・異なるファイル名を指定する操作をloopさせる方法
の2点です。
マクロは手動で実行するものとし、
データを参照するBBBのファイルは、マクロ起動時も終了時も閉じた状態にしたいと考えています。
ご教示の程、よろしくお願いいたします。
No.1ベストアンサー
- 回答日時:
>別のファイルを指定してデータを持ってくる方法
「マクロの記録」で「開く」と「閉じる」を実行してみてください。
>異なるファイル名を指定する操作をloopさせる方法
For i = 1 To 30
ファイル名 = "C:\AAA\BBB" & i & ".xls"
(ファイルを開く)
(ファイルの集計)
(ファイルを閉じる)
Next i
夜分にご回答くださり、ありがとうございました。
ポイントに対していち早くご教示頂き、大変参考になりました。
質問のマクロは頂いたヒントで無事完成させることができ、大変感謝しております。
No.4
- 回答日時:
マクロでの回答はすでにでていますので…
対象がたかだか30程度ならば、マクロで固定的な集計方法の結果を出すよりも1シートに全部の結果を集計しておいて、あとは自由に集計処理する方法にしておいたほうが、後で違う集計をしたくなってもすぐに対応できそうに思います。
幸い1回答は1列になっているみたいですので、例えばB列からの30列に各回答を参照させておけば、全部の回答内容の一覧ができます。
(ブック間のセル参照を設定しておけばよいだけ)
とりあえず、このシートを回答集計とでもしておいて、他のシートでこのシートを参照しながら、自由に集計すれば(同じシートでもよいですが)、マクロなどを使わなくても関数とコピーフィルだけで集計できることでしょう。
もし、追加などで違う集計が必要になった場合でも、簡単に自力で対応できるのではと思います。
異なる観点からのご回答、ありがとうございます。
ご指摘の通り、マクロに拘泥しない事も重要ですね。
柔軟性という観点にも十分に留意したいと思います。
大変参考になりました。
No.3
- 回答日時:
このコーナーを借りて回答者に「コードを書いてくれ」というのは、規約違反ですよ。
もっと自分自身が勉強しないと。ものによっては、金を払って学校に言って勉強したり、手に負えないなら業者にやってもらうのが、世の慣わし(経済原則)です。もっと絞った1点ならよいが、全体を書けと言う丸投げはだめ。
だから下記は1方法だが、各ステップに分ける力を養わないと。
この課題は
(1)決まった1つのフォルダの多数のファイルを1つづつ読んでいくコード
Googleで照会すると、過去に似た質問が多いために沢山出てくる。
(A)FSOを使う方法
http://www.atmarkit.co.jp/fwin2k/tutor/cformwsh1 …注)簡略化すると下記
(B)Dir関数を使う方法
GoogleでDir関数で照会。
http://www.accessclub.jp/samplefile/samplefile_2 …
など多数。
(C)FileSearch
http://ziddy.japan.zdnet.com/qa4466015.html
の2-3種有る。
(2)読んだファイルの1つのシートの決まった範囲(A)と思うが、
それを集約シート(B)に貼り付けるコード。
そのとき(A)の最終行が問題になることがある。(B)は最終行の次の行から下に貼り付けるので、必ずといったほど問題になる。
それは
Sub test01()
d = Range("A65536").End(xlUp).Row
MsgBox d
End Sub
を色んなデータでやってみて、納得し応用のこと。
(3)あるシートにデータが集約されたら、VBA処理に拘らず、エクセル関数(Frequency関数)や、ソートや、集計の方法が使えないか考えること。
ーー
1つのシートにデータをまとめず、もちろんVBAだけで、集計したりする方法が有ると思うが、初心者らしい質問者は、VBAの利用は
最小限にとどめるべきだ。ブックを開かないでデータを採る希望が有るのかな、そんなのは勉強して先の先の話だ。ファイルを開いてー読んでー閉じるの繰り返しをやるべきだ。
ーー
(注) FSO利用でカレントフォルダCurDirのファイル名を列挙の例。
他のフォルダを指定に変更してファイル名が次々出てくることを納得のこと。
Sub test02()
Dim Fld As Object
Dim Fil As Object
Dim FSO As Object
Set FSO = CreateObject("Scripting.FileSystemObject")
Path1 = CurDir
MsgBox Path1
Set Fld = FSO.GetFolder(CurDir & "\")
For Each Fil In Fld.Files
MsgBox Fil.Name
Next
End Sub
詳細にご指導頂き、誠にありがとうございます。
また、丸投げをしたいという意図があると誤解させる文面になってしまい、大変申し訳ございませんでした。
提示して下さった様々な方法は、今後の能力伸長の指針とさせていただきます。
ありがとうございました。
No.2
- 回答日時:
>データを参照するBBBのファイルは、マクロ起動時も終了時も閉じた状態にしたいと考えています。
ブックを開かないで読む
http://www.officetanaka.net/excel/vba/tips/tips2 …
ご参考になるかもです。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法 5 2022/09/13 06:30
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) tatsumaru77様 昨日回答して頂いたものです。 すみませんが、昨日の質問で1つ補足があります 1 2022/05/15 15:06
- Excel(エクセル) 【至急】マクロのカードの書き方を教えてください 2 2022/09/03 20:23
- Visual Basic(VBA) エクセルのマクロについて教えてください。 2 2023/06/04 09:39
- Excel(エクセル) エクセルのマクロについて教えてください。 1 2023/02/21 09:28
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
ワイルドカード「*」を使うとう...
-
VBAで別ブックのシートを指定し...
-
別ブックをダイアログボックス...
-
【ExcelVBA】インデックスが有...
-
VBA コードを実行すると画面が...
-
vbaでvbaProjectのパスワード解...
-
VBS Bookを閉じるコード
-
複数ブックから一つのシートに...
-
ExcelのVBAです。フォルダ内の...
-
現在開いているbook全てを対象...
-
エクセルマクロで、他ブックか...
-
[Excel]ADODBでNull変換されて...
-
複数のブックからデータを転記...
-
複数のエクセルブックをひとつ...
-
【前回の続きです、ご教示くだ...
-
EXCEL VBA で現在開いているブ...
-
【ExcelVBA】zip圧縮されたCSV...
-
エクセルのマクロについて教え...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
VBA シートをコピーする際に Co...
-
エクセルVBAが途中で止まります
-
別ブックをダイアログボックス...
-
【ExcelVBA】インデックスが有...
-
ワイルドカード「*」を使うとう...
-
【ExcelVBA】VBA実行でダイアロ...
-
ExcelのVBAです。フォルダ内の...
-
フォルダ内の全てのファイルに...
-
VBA コードを実行すると画面が...
-
VBA 別ブックからコピペしたい...
-
VBAで別ブックのシートを指定し...
-
VBS Bookを閉じるコード
-
vbaでvbaProjectのパスワード解...
-
【VBA】全シートの計算式を全て...
-
VBA シート名が一致した場合の...
-
【ExcelVBA】zip圧縮されたCSV...
-
複数のエクセルブックをひとつ...
-
VBSでExcelのオープン確認
-
VBAで別のブックにシートをコピ...
-
【Excel VBA】書き込み先ブック...
おすすめ情報