複数エクセルファイルのレコードを1ファイルにまとめたい。
1.ファイル名は違う(質問上のファイル名はあ、い、う、の3つとします)
2.フィールド名は共通
3.レコード数(行側)はファイルにより違う
私はファイルあ の行末にファイルい と ファイルうのフィールド以外の行全部をコピーしペーストし、ファイルあをファイルAのように名前を変更し保存し利用しています。
しかしながら、ファイルあ、い、う程度ならその作業でも良いのですが、ファイル数が多くなると、手間がかかります。
ファイルは月単位に作られ、毎月各ファイルの行数も変わります。
フィールドは常に共通です。効率的にファイルA(あ、い、う、え、お、、、、)を作る関数とかVBA?とか教えて頂けないでしょうか?
No.2ベストアンサー
- 回答日時:
以下のマクロを標準モジュールに登録してください。
シート名が提示されていないので、”集計”としました。変える場合は
Const sname As String = "集計" をあなたのシート名に変えてください。
Const folder As String = "D:\goo\excel\goo371\" は、集計対象のファイルが格納されているフォルダです。
あなたの環境にあわせて、適切に設定して下さい。
マクロを登録したファイルのシートにも同じシート名(例では集計)のシートを予め作成しておいてください。
集計対象のフォルダ内の全てのファイル(拡張子が.xlsx)のシート(例では集計)をコピーして、マクロのあるファイルのシート(例では集計)に格納します。
--------------------------------------
Option Explicit
Const sname As String = "集計"
Const folder As String = "D:\goo\excel\goo371\"
Public Sub ファイル纏め()
Dim path As String
Dim datafile As String
Dim row0 As Long
Dim row As Long
Dim maxrow As Long
Dim ws As Worksheet
row0 = 1
ThisWorkbook.Worksheets(sname).Cells.Clear
datafile = dir(folder & "*.xlsx")
Do While datafile <> ""
Workbooks.Open (folder & datafile)
Set ws = Worksheets(sname)
If row0 = 1 Then
ws.Rows(1).Copy Destination:=ThisWorkbook.Worksheets(sname).Rows(1)
row0 = row0 + 1
End If
maxrow = ws.Cells(ws.Rows.Count, 1).End(xlUp).row
For row = 2 To maxrow
ws.Rows(row).Copy Destination:=ThisWorkbook.Worksheets(sname).Rows(row0)
row0 = row0 + 1
Next
Workbooks(datafile).Close
datafile = dir()
Loop
MsgBox ("完了")
End Sub
No.1
- 回答日時:
補足要求です。
①ファイル名(あ、い、う)の拡張子は何でしょうか。.xlsですか、それとも.xlsxですか。
②3つのファイルの同じシート名のものをまとめればよいと理解しましたが、そのシート名は何でしょうか。
(大文字、小文字、全角、半角についてもを正確に提示ください)
③ファイル”あ”の見出し行(1行目)とデータ行(2行目以降)をコピーし、”い”と”う”についてはデータ行(2行目)をコピーすれば良いのでしょうか。(フィールドに意味がよくわかりませんので、その確認です)
④ファイルをまとめるとき、順番はかならず、”あ”、”い”、”う”の順でしょうか。
それとも、”い”、”う”、”あ”のようになっても良いのでしょうか。
(その場合は、”い”の見出し行とデータ行をコピーし、他のファイルはデータ行のみコピーします)
⑤ファイル名(あ、い、う)は、同じフォルダにまとめてある前提で良いですか。
また、そのフォルダには、(あ、い、う)以外のファイルは存在しない前提で良いですか。
(集計対象のファイルのみ格納されている前提)
⑥まとめる先のファイル(ファイルA)は、⑤とは違うフォルダに格納されている前提で良いですか。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・ハマっている「お菓子」を教えて!
- ・最近、いつ泣きましたか?
- ・夏が終わったと感じる瞬間って、どんな時?
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・都道府県穴埋めゲーム
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
EXCELで関数が使えなくなった?
-
Excel 2枚目のブックが開かな...
-
エクセルで他のファイルのセル...
-
複数のtxtの特定部分を抽出し、...
-
ファイル内にある数字の出現回...
-
CPU使用率が100%となっ...
-
複数エクセルファイルのレコー...
-
パワーポイントをエクセルファ...
-
エクセルで「500時間」を「何日...
-
EXCELで上書き保存しないと反映...
-
エクセル関数の解読サイトなん...
-
エクセルで複数のブックで「元...
-
エクセルの塗りつぶしの色が勝...
-
エクセル 列の最大数はIV?
-
エクセルでファイルを閉じても...
-
エクセルに変な矢印が出てクリ...
-
エクセルを開いたときのシート
-
エクセルを上書き保存したのに...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
【スプレドシート】IMPORTRANGE...
-
エクセルでファイルを開かずに...
-
複数のtxtの特定部分を抽出し、...
-
Excel 2枚目のブックが開かな...
-
CPU使用率が100%となっ...
-
PhotoshopでExcelのファイルが...
-
エクセルで他のファイルのセル...
-
エクセルマクロ 数式【VLOOKUP...
-
VBAで集計元のファイル名を取得...
-
MATLABでcsvファイルを読み込も...
-
複数エクセルファイルのレコー...
-
one drive からExcel onlineを...
-
エクセルマクロ(vba)のFSO.Open...
-
マクロで別ファイルのシートコ...
-
エクセルでハイパーリンクが貼...
-
エクセル保存後に別のブックの...
-
Excel2000のセルの書式設定メニ...
-
マクロでシートのデータをコピ...
-
VBAで.docのみを抽出
-
Excel2000でフォルダを移動する...
おすすめ情報
補足要求下さりありがとうございます。
①拡張子は.xlsxです。エクセル2016です。
②シート名は全く同じです。
③見出しフィールド名はあ、い、う共に共通なので、
見出し列名が一致すればあ、い、うの行順番は問いません。
④見出し列はあ、い、う共に共通かつ、行側の並びはあ、い、うが う、い、あ になっても構いません。
列名(フィールド並び含め)を一行目に利用し、2行目以降のレコードだけを繋げて1ファイル(1ワークシート)に出来ればと思っております。
⑤同じフォルダにファイル名が異なり、ワークシート名が同じで存在しております。
⑥まとめる先のファイルフォルダは変わっても同じでも構いません。
よろしくお願い致します。