- 締切済み
エクセルの集計機能のマクロ
会社の従業員にアンケートをエクセルで送付し、所定の表に回答を入力してもらい、そのエクセルを全従業員(50人)から回収するということを実施しました。 回答フォームは以下の通りでして、同様のフォームに記入された回答が50個のエクセルファイルとして存在します。 配布されたエクセルのフォームは 従業員No. 質問1 質問2 1 ○ A といった横3列、縦1行の表となっています。 各人のフォームが同じですので、これを50人分自動集計できるマクロを作成したいと思っています。集計したいイメージは以下の通りです。 従業員No. 質問1 質問2 1 ○ A 2 × D 3 ○ C (間、省略) 50 × B 上記のように自動集計するマクロを作成したいのですが、どのようにプログラミングすればよいか分かりません。 いろいろなサイトを見ましたが、奈何せん初心者ですので理解できませんでした。 どなたか分かる方がいらっしゃいましたら、具体的なプログラムをご教授いただけませんか。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- rivoisu
- ベストアンサー率36% (97/264)
ちょっと虫がよすぎやせんか 自分で少しは勉強する。 金だすか(専門家に作ってもらう) 手でしこしこ開いてはコピーして1つのファイルに集約してからここに相談する。
- n-jun
- ベストアンサー率33% (959/2873)
#3です。 #3のコードは2002で検証した物を拡張子"xlsx"だけ変更しました。 なので2007だと全く違うものなのかも知れません。 そのバージョンをお持ちの方からの回答を待って下さい。
- n-jun
- ベストアンサー率33% (959/2873)
#1です。 >伊藤一郎.xlsx たぶん2007なのでしょうね。 もっていないので検証は出来ませんが、 Sub try() Dim wb As Workbook Dim ws As Worksheet Dim r As Range Dim Pn As String, Fn As String Application.ScreenUpdating = False Set ws = ThisWorkbook.ActiveSheet Set r = ws.Range("A2") ws.Range("A1:C1").Value = Array("従業員No.", "質問1", "質問2") Pn = ThisWorkbook.Path & "\" Fn = Dir(Pn & "*.xlsx") Do Until Fn = "" If Fn <> ThisWorkbook.Name Then Set wb = Workbooks.Open(Filename:=Pn & Fn) ' Sheet1は実際のシート名に変更 r.Resize(, 3).Value = wb.Worksheets("Sheet1").Range("A2:C2").Value wb.Close False Set r = r.Offset(1) End If Fn = Dir() Loop Set r = Nothing Set wb = Nothing Application.ScreenUpdating = True End Sub コピーを作成してから試して下さい。 従業員Noの並べ替えは行なってません。 ご参考になれば。
- n-jun
- ベストアンサー率33% (959/2873)
#1です。 >50個のExcelファイルと従業員Noの組み付けはどうなっているのでしょう? 勘違いでしたので忘れて下さい。
- n-jun
- ベストアンサー率33% (959/2873)
50個のExcelファイルと従業員Noの組み付けはどうなっているのでしょう?
補足
Excelファイルの名前は「伊藤一郎.xlsx」といったように自分の氏名に変更してもらい、ファイル内の従業員番号は1,2,…50のうち自分の番号を記入してもらう方式となっています。 以上のファイルをすべて回収し、「伊藤一郎.xlsx」(従業員番号1)、「加藤二郎.xlsx」(従業員番号2)、…、「渡辺花子.xlsx」(従業員番号50)といったファイルが50個同一フォルダに保管されている状況です。
お礼
試してみましたが、うんともすんとも言いません…。 上記プログラムの内容が全く理解できないので、どのように対処したよいのかもわかりません。