よろしくお願いします。
詳しい方、お知恵を貸してください。
アンケートのExcelシートを配布し、【記入表】というシートの4-6行目に記入してもらい1つのシートに集約したいと思っています。(画像をご参照ください)
対象者は500近くで有り、500近くのExcelファイルを1つのフォルダに格納、
別ブックの【回答一覧】というシートに集約したいと思っています。
今までは4-6行目を選択し、コピーして【回答一覧】シートに貼り付けをしていました。
同じことの繰り返しなので、マクロで何とか出来ないかと思っています。
下記の画像でコピーしたい【記入表】シートの
表頭の3行目を除いた4-6行目(行全体をコピーし、セルの範囲指定ではない方法でやりたいです)
を値貼り付けで(関数やリスト入力の値が入っている場合有り)
別ブックの【回答一覧】シート
に集約したいのです。
マクロで出来るのでしょうか。
回答の3行ずつが、【回答一覧】シートに値貼付けされていくイメージです。
この際、Aさんという回答部分にBさんの回答が上書きされないようにしたいです。
【回答一覧】シートに
Aさんの【記入表】4-6行目が【回答一覧】の4-6行目
Bさんの【記入表】4-6行目が【回答一覧】の7-9行目
Cさんの【記入表】4-6行目が【回答一覧】の10-12行目
という感じに集約していきたいのです。
各人から回答を記入したシートを同じフォルダ内に集約しておけば
可能でしょうか。
お知恵を貸してください。
よろしくお願いします。
No.5ベストアンサー
- 回答日時:
No4です。
No4の補足のような結果を得る場合、マクロでは1回目の実行時にファイルA,B,Cがあって、
2回目に実行時にファイルE,Fが追加されたことを認識するのは困難です。
(不可能ではないが、まじめにこれをきちんとやると、各回の実行毎にどのファイルを処理したかを、記録しておく必要があります)
よって、やり方としては、2つの案が考えられます。
1案:
毎回、フォルダ内にあるexcelファイルを全て処理する。
毎回、集計シートを一旦クリアした後、4行目から書き込んでいく。
2案:
処理したexcelファイルは、他のフォルダ(処理済みフォルダ)を作成しておき、手作業で処理済みフォルダへ移動する。新しく追加されたファイルのみ、格納用フォルダに格納し、処理を行う。
1案の長所はファイルを移動する手間が発生しない。
短所は、ファイル数が500になると処理時間が長くなる。
2案の長所/短所は1案と逆になります。
どちらを採用するかはあなたが判断してください。
度々の回答ありがとうございます。
1案で行なおうとする場合、どのようなマクロの文となりますでしょうか。
各ファイルの4行目から6行目(列は全範囲)を各シートごとに追加していきたいのです。
Aさんのファイル4-6行目を集計ファイルの4-6行目
Bさんのファイル4-6行目を集計ファイルの7-9行目
という感じです。
500ファイルを同じフォルダ内に入れて一気に処理したいと思うのです。
なんとかできないでしょうか。。。
No.4
- 回答日時:
今回集計が終わった後、次回の集計を行う場合は、
集計シートの最後の行の後ろへ追記して行くのでしょうか。
それとも、以前のぶんをクリアして、集計シートの4行目から書き込んで行くのでしょうか。
回答ありがとうございます。
下記が回答になっていますでしょうか。
同じフォルダ内に(A、B、C)(①)ファイルがあり、1度集計、その後、D、Eファイル(②)が同じフォルダ内に追加された場合、
(A、B、C、D、E)(③)フォルダを集計
つまり、③=①+②
となり、新しく追加されたファイル(②)のみ、行の後ろへ追記していく形としたいです。
度々すみません。よろしくお願いします。
No.3
- 回答日時:
回答ありがとうございます。
既質問のNo5様の回答のどの部分を変更すればよいのでしょうか。
下記を利用して
セル(3行目、A列)から(6行目、行全体)
を選択するにはどうしたらよいのでしょうか。。。
↓既質問における回答↓
Option Explicit
Public Sub アンケート集計()
Const Folder As String = "D:\goo\data7" 'excelファイル格納フォルダ
Dim fname As String 'ファイル名
Dim wb2 As Workbook '記入表のブック
Dim ws1 As Worksheet '回答一覧
Dim ws2 As Worksheet '記入表
Dim maxrow As Long '回答一覧の最大行
Dim row1 As Long '回答一覧の処理行
Set ws1 = Worksheets("回答一覧")
maxrow = ws1.Cells(Rows.Count, "C").End(xlUp).Row 'C列の最大行取得
If maxrow < 2 Then maxrow = 2 '2行未満なら2行に修正
row1 = maxrow + 1 'maxrowの次の行から書き込み
fname = Dir(Folder & "\*.xlsx") '指定フォルダ内の*.xlsxを取得
If fname = "" Then
MsgBox (Folder & "内に.xlsxなし")
Exit Sub
End If
Do While fname <> ""
'該当ファイルをオープン
Set wb2 = Workbooks.Open(Folder & "\" & fname)
Set ws2 = wb2.Worksheets("記入表")
'記入表から回答一覧へ6セル分まとめて転記
ws1.Cells(row1, "C").Resize(, 6).Value = ws2.Cells(3, "C").Resize(, 6).Value
wb2.Close SaveChanges:=False
'回答一覧の処理行に1加算
row1 = row1 + 1
'次のexcelファイルを取得
fname = Dir()
Loop
MsgBox ("処理完了")
End Sub
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) EXCEL マクロで 同じフォルダ内の複数ファイルの複数行全体を選択して1つのファイルに集約 4 2022/09/27 18:41
- Excel(エクセル) Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい 8 2022/09/07 15:12
- Excel(エクセル) Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか 4 2022/09/06 19:03
- Excel(エクセル) 【困っています】VBA 追加処理の記述を教えてください。 1 2022/08/25 22:54
- Visual Basic(VBA) 【前回の続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/16 16:44
- Visual Basic(VBA) 【前回の続き続きです、ご教示ください】VBAの記述方法がわかりません。 2 2022/08/24 20:49
- Visual Basic(VBA) 【困っています2】VBA 追加処理の記述を教えてください。 2 2022/08/26 11:42
- Visual Basic(VBA) Excelのマクロコードについて教えてください。 1 2022/03/27 13:25
- Visual Basic(VBA) 複数ファイルのデータの統合について 12 2022/05/14 12:03
- Excel(エクセル) 【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい 6 2022/09/28 18:16
このQ&Aを見た人はこんなQ&Aも見ています
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルで前のシートを連続参...
-
別シート参照のセルをシート毎...
-
シートの保護のあとセルの列、...
-
EXCELで1ヶ月分の連続した日付...
-
VBAで条件によりフォントサイズ...
-
エクセルで、「1つ前のシート...
-
Accessのスプレッドシートエク...
-
エクセルのシート名をリスト化...
-
特定のシートの削除を禁止した...
-
エクセルで前シートを参照して...
-
エクセルでファイル保存時に複...
-
VBAでシートコピー後、シート名...
-
エクセルでシート名を自動入力...
-
Excelのシートを、まとめて表示...
-
EXCELで同一フォーマットのシー...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelで同じシートのコピーを一...
-
エクセルの複数シートの保護を...
-
Excelで金銭出納帳。繰越残高を...
-
エクセルでファイルを開いたと...
-
EXCELで1ヶ月分の連続した日付...
-
エクセルVBAでパスの¥マークに...
-
EXCEL:同じセルへどんどん足し...
-
シートの保護のあとセルの列、...
-
別シート参照のセルをシート毎...
-
エクセルで前のシートを連続参...
-
前の(左隣の)シートを連続参...
-
EXCELで同一フォーマットのシー...
-
VBAでシートコピー後、シート名...
-
Excel 連番を入力する方法
-
エクセル 計算式も入っていない...
-
エクセルで前シートを参照して...
-
エクセルでシート名を自動入力...
-
Accessのスプレッドシートエク...
-
複数シートの特定の位置に連番...
-
エクセルのシート名をリスト化...
おすすめ情報