
よろしくお願いします。
同じ質問を以前したのですが、日にちが経って締め切りになってしまい
未だに自分では解決できないため、お知恵を借りたく、再度質問させて頂くものとなります。
過去、ご回答頂いた方、ありがとうございました。
再度の質問、ご容赦ください。
アンケートのExcelシートを配布し、【記入表】というシートの4-6行目に記入してもらい1つのシートに集約したいと思っています。(画像をご参照ください)
対象者は500近くで有り、500近くのExcelファイルを1つのフォルダに格納、
別ブックの【回答一覧】というシートに集約したいと思っています。
今までは4-6行目(行全体)を選択し、コピーして【回答一覧】シートに貼り付けをしていました。
同じことの繰り返しなので、マクロで何とか出来ないかと思っています。
下記の画像でコピーしたい【記入表】シートの
表頭の3行目を除いた4-6行目(行全体はどのようにしていすればよいのでしょうか。セルの範囲指定はresizedを使うことは調べました)
を値貼り付けで(関数やリスト入力の値が入っている場合があります)
別ブックの【回答一覧】シート
に集約したいのです。
マクロで出来るのでしょうか。
回答の3行ずつが、【回答一覧】シートに値貼付けされていくイメージです。
この際、Aさんという回答部分にBさんの回答が上書きされないようにしたいです。
【回答一覧】シートに
Aさんの【記入表】4-6行目が【回答一覧】の4-6行目
Bさんの【記入表】4-6行目が【回答一覧】の7-9行目
Cさんの【記入表】4-6行目が【回答一覧】の10-12行目
という感じに集約していきたいのです。
各人から回答を記入したシートを同じフォルダ内に集約しておけば
可能でしょうか。
回答頂いたファイルを同じフォルダに保存していき、回答一覧シートに上書きしていくことを想定しています。
(10月1日にはA、B、Cからの回答ファイルを集約、10月8日にはD、Eから回答があった場合、8日にはA、B、C、D、Eの過去の回答も含め全てマクロで集約することを想定しています。)
お知恵を貸してください。
よろしくお願いします。

No.3ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
Const Folder As String = "D:\goo\data8" 'excelファイル格納フォルダ
は、「500近くのExcelファイルを1つのフォルダに格納」してあるフォルダ名です。あなたの環境にあわせて適切に設定してください。
Option Explicit
Public Sub アンケート集計()
Const Folder As String = "D:\goo\data8" 'excelファイル格納フォルダ
Dim fname As String 'ファイル名
Dim wb2 As Workbook '記入表のブック
Dim WS1 As Worksheet '回答一覧
Dim wS2 As Worksheet '記入表
Dim row1 As Long '回答一覧の処理行
Set WS1 = Worksheets("回答一覧")
'4行以降をクリア
WS1.Rows("4:" & Rows.Count).ClearContents
row1 = 4 '4行から書き込み
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("記入表")
'記入表から回答一覧へ3行分まとめて転記
WS1.Rows(row1 & ":" & row1 + 2).Value = wS2.Rows("4:6").Value
wb2.Close SaveChanges:=False
'回答一覧の処理行に3加算
row1 = row1 + 3
'次のexcelファイルを取得
fname = Dir()
Loop
MsgBox ("処理完了")
End Sub
No.4
- 回答日時:
パワークエリが得意の範疇でもありそうですね。
No.2
- 回答日時:
こんにちは
>マクロで出来るのでしょうか。
ご質問文に記載のない、後出しの特殊条件等が無ければ可能でしょう。
>表頭の3行目を除いた4-6行目(行全体はどのようにしていすれば
>よいのでしょうか。セルの範囲指定はresizedを使うことは調べました)
固定範囲なので、対象シートの
.Rows("4:6")
で、4~6行目の行全体の範囲を指定できます。
>を値貼り付けで(関数やリスト入力の値が入っている場合があります)
Copy して、PasteSpecial(xlPasteValues) でも可能ですが、
DestinationRange.Value = SourceRange.Valjue
とすることで、直接「値を転記」できます。
ただし、この場合はそれぞれのRangeのサイズを同じにしておく必要があります。
>という感じに集約していきたいのです。
転記先を変数にしておいて(DestinationRange)、初期値をセットしたら、後はループ内で転記する毎に
Set DetsinationRange = DestinationRange.Offset(3)
とすることで、3行分下にずれますので、次の転記先を示すことが可能です。
以前にも回答しましたが、同様のご質問を何度もなさっているようですが、基本的なループ等は既に作成してもらっているはずですので、そちらを利用なさればよいでしょう。
https://oshiete.goo.ne.jp/qa/13132300.html
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
電子書籍プレゼントキャンペーン!
最大2万円超分当たる!マンガや小説が読める電子書籍サービス『Renta!』で利用できるギフトコードプレゼント実施中!
-
【マクロ】同じフォルダ内にある複数ブックから1つのブック内の1シートにデータを集めたい
Excel(エクセル)
-
マクロか関数で処理したいのですが、教えて頂けませんか。
Excel(エクセル)
-
Excel、同じフォルダ内のExcelファイルの特定シートのみを1つのファイルに集約したい
Excel(エクセル)
-
4
マクロを簡潔にしたい
Excel(エクセル)
-
5
エクセルで書式設定とフィルタの組み合わせでうまく行かないのですが
Excel(エクセル)
-
6
VBA エラーの件
Excel(エクセル)
-
7
マクロのコードを、少しでも削って短くしたい
Excel(エクセル)
-
8
エクセルでのデータの統一に関して リストを作成する際、元データをコピペでリストに転記しており、元デー
Excel(エクセル)
-
9
エクセルVBAでオブジェクトが必要です
Excel(エクセル)
-
10
Excel使用前提 同じフォルダ内にあるファイルの集約等をマクロでできますか
Excel(エクセル)
-
11
Excelの複数ファイルの複数行を別ファイル1つのシートにVBA、マクロで集約する方法
Excel(エクセル)
-
12
excelの数式の書き方について。 以下のような数式をSheet1に書いています。 Sheet1のB
Excel(エクセル)
-
13
エクセル、日々の集計整理方法。(再送です。)
Excel(エクセル)
-
14
エクセルのファイルサイズが急に大きくなってしまった
Excel(エクセル)
-
15
エクセルで列の行の重複の検索方法を教えてください。
Excel(エクセル)
-
16
エクセルデーターの並び替え
Excel(エクセル)
-
17
記録マクロのみでできますか?
Excel(エクセル)
-
18
Excel Powerクエリーの質問、行数指定は可能でしょうか?
Excel(エクセル)
-
19
【EXCEL】=セル&セルが上手く表示できない。
Excel(エクセル)
-
20
エクセルのデータの抽出について
Excel(エクセル)
関連するカテゴリからQ&Aを探す
このQ&Aを見た人がよく見るQ&A
人気Q&Aランキング
-
4
中出しをするとお腹が痛い・・・。
-
5
口の中に黒い血の塊
-
6
VLOOKUP関数を使用時、検索する...
-
7
精液の落とし方を教えてください
-
8
業務スーパーのコメ何種類か食...
-
9
これって喉仏ですか? 私は女性...
-
10
口臭と大腸癌
-
11
母親がピロリ菌を持っていたの...
-
12
舌の裏の痛みのないプツプツの...
-
13
爪が紫色?
-
14
大腸カメラ時の静脈麻酔について
-
15
この赤い斑点は何でしょうか。 ...
-
16
近々健康診断があります。 そこ...
-
17
簡易血糖値測定器の差異
-
18
エクセルで値ではなく関数を参...
-
19
テスターで断線を調べる方法教...
-
20
検便についてです。 便は取れた...
おすすめ情報
公式facebook
公式twitter