Overview
Three common ways to merge Excel files:
1) Power Query (recommended for most cases)
- Put all source files (.xlsx, .csv, etc.) in one folder.
- Data > Get Data > From File > From Folder → select folder.
- Click Combine → Combine & Transform Data (or Combine & Load).
- Power Query Editor shows a sample file; set transformations (remove headers, fix types, filter).
- Expand the combined table and load to worksheet. Refreshing updates when files change.
When to use: files share the same schema or you want repeatable, refreshable transformations.
2) VBA (good for custom logic or automation inside Excel)
- Create a macro that opens each workbook/file, copies needed sheets/ranges, and appends into a master sheet.
- Typical steps:
- Loop through files in a folder (Dir or FileSystemObject).
- Open each file, optionally remove its header row, copy UsedRange (or specific range), paste into master workbook at next empty row.
- Close source file and continue.
- Advantages: fine-grained control (select sheets, skip rows, rename columns).
- Caveats: need to handle different schemas, errors, large file performance, and trust macro security settings.
Example VBA skeleton:
vb
Sub MergeFiles() Dim FolderPath As String, FileName As String Dim wbSrc As Workbook, wbDest As Workbook FolderPath = “C:\Folder\” Set wbDest = ThisWorkbook FileName = Dir(FolderPath & “*.xlsx”) Do While FileName <> “”Set wbSrc = Workbooks.Open(FolderPath & FileName) ' remove header if needed: wbSrc.Sheets(1).Rows(1).Delete wbSrc.Sheets(1).UsedRange.Copy _ wbDest.Sheets("Master").Cells(Rows.Count, 1).End(xlUp).Offset(1,0) wbSrc.Close False FileName = Dir()Loop End Sub
3) Command line / shell (fast for simple CSV merges)
- Windows CMD: place CSVs in one folder, open Command Prompt there and run: copy *.csv merged.csv
- Powershell (preserve header once): Get-ChildItem *.csv | ForEach-Object { if (\(first) { Get-Content \); \(first=\)false } else { Get-Content $ | Select-Object -Skip 1 } } | Set-Content merged.csv
- macOS / Linux: cat file1.csv file2.csv > merged.csv (or use awk to skip repeated headers)
When to use: plain CSVs with identical columns, fast batch merges without transformations.
Quick recommendations
- Use Power Query if you want GUI-driven, repeatable transforms plus refresh.
- Use VBA when you need custom row/sheet logic not supported easily in Power Query.
- Use command-line for very fast merges of homogeneous CSV files.
If you want, tell me which method you prefer and I’ll give a step‑by‑step guide tuned to your files (folder path, file types, header behavior).
Leave a Reply