2016年8月1日 星期一

【Excel】合併多個檔案


  1. 多個excel檔案合併至同一分頁中
    參考網址:http://www.ckizumi.com/2013/08/excel.html
  2. 同一檔案分頁合併至同一分頁中
    參考網址:http://blog.bestdaylong.com/2008/10/excel.html
  3. 同or不同檔案之相同表格合併彙算至單一表格中
    參考網址:http://www.techbang.com/posts/12567-using-merge-calculation-tabular-data-into-one
說明:

1.
 a. M Riza 先生的VBA

Sub simpleXlsMerger()
Dim bookList As Workbook
Dim mergeObj As Object, dirObj As Object, filesObj As Object, everyObj As Object
Application.ScreenUpdating = False
Set mergeObj = CreateObject("Scripting.FileSystemObject")
 
'change folder path of excel files here
Set dirObj = mergeObj.Getfolder("D:\change\to\excel\files\path\here")
Set filesObj = dirObj.Files
For Each everyObj In filesObj
Set bookList = Workbooks.Open(everyObj)
 
'change "A2" with cell reference of start point for every files here
'for example "B3:IV" to merge all files start from columns B and rows 3 
'If you're files using more than IV column, change it to the latest column
'Also change "A" column on "A65536" to the same column as start point
Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
ThisWorkbook.Worksheets(1).Activate
 
'Do not change the following column. It's not the same column as above
Range("A65536").End(xlUp).Offset(1, 0).PasteSpecial
Application.CutCopyMode = False
bookList.Close
Next
End Sub
b. 使用說明:
  • 開啟 Excel,按下 Alt + F11 叫出巨集編輯器,貼入網站中的 Code
  • 要貼在【ThisWorkbook】裡面喔~不是Sheet裡!!!
  • 修改第8行的路徑,改成需要合併的 Excel 檔存放路徑
  • 按下執行鍵就 OK 了

心得

  • 儘管是 CSV 檔案也能正確合併。
  • 這邊要注意一件事情,Code 當中的 A2 是起始的儲存格,在合併過程中會忽略掉標題列,直接從第二列開始複製;若是你想連標題列都合併起來,請改成 A1。IV 是他的複製欄寬,可以改成自己想要的欄寬。
Range("A2:IV" & Range("A65536").End(xlUp).Row).Copy
  • 值得注意的是,雖然這個方法是給 Excel 2007 使用,但 Excel 2007 開始有個重大變化,就是 Excel 最大列數從 2^16 次方改成了 2^20 次方。這代表你可以處理的資料從 Excel 2003 的 65,536 筆增加至 1,048,576 筆。
心得第二點的發現是因為我合併了所有的檔案,還很慶幸原來只有六萬多筆,最後慚愧地發現原來資料數量有三十萬筆,而 Code 當中卻只設定到 65,536 筆,只需要把 A65536 改成 A1048576 即可。


沒有留言:

張貼留言