2016-11-24 53 views
1

我有120個不同的Excel原始數據文件,從那些我需要將數據從大約500(也許更多)不同單元格拉到一個概覽工作簿中的表格格式。什麼是最有效的方法來做到這一點?500+單元格引用和120個工作簿

每個工作簿的佈局是相同的,所以我已經開始將我的新概覽錶鏈接到第一個數據文件中的單元格,並計劃使用查找和替換來更改引用其他數據文件的路徑。至少可以這麼說!

我也學習Python,所以會歡迎基於Python的解決方案,或幾乎任何解決方案的真正!

謝謝

+0

你可以用SQL和ADO做到這一點 –

+0

@Nathan_Sav感謝您的回覆!對於沒有任何經驗的人來說,這樣做值得學習嗎?還是需要更長的時間學習,而不是僅僅做我目前正在做的事情? – Maverick

+0

創建VBA腳本應該相對容易,該腳本可以打開特定目錄中的每個文件並複製/粘貼每個人的某些特定值,但當然需要一段時間才能逐一計算這麼多工作簿。見:http://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba – Limak

回答

1

的Python提供了許多模塊。我會推薦openpyxl模塊。你可以閱讀關於它here。如果我正確地理解了你,你想要結合多個Excel電子表格。我會這麼做的方法是在所有Excel電子表格中的每行添加一行到新的電子表格。我寫了一個簡單的程序來做到這一點:

import openpyxl 
import os 
from os.path import join 
spreadsheet = openpyxl.Workbook() 
final_sheet = spreadsheet.get_sheet_by_name('sheet1') 
x = 0 
for(dir, dirs, files) in os.walk('C:\Users\Cheyn Shmuel\Documents'): 
     for file in files: 
      filename = join(dir, file) 
      try: 
       workbook = openpyxl.load_workbook(filename) 
      except: 
       continue # in case there are files that aren't excel in that directory 
      for s in workbook.get_sheet_names(): 
       sheet = workbook.get_sheet_by_name(s) 
       for row in sheet.rows: 
        for cell in row: 
         try: 
          final_sheet[cell.coordinate[0] + str(int(cell.coordinate[1:]) + x)] = cell.value 
         except: 
          final_sheet[cell.coordinate[:1] + str(int(cell.coordinate[2:]) + x)] = cell.value 
       x += sheet.get_highest_row() 

spreadsheet.save('your file.xlsx') 

這項計劃將通過在你的目錄中的所有Excel文件,並把它們放入一個新的電子表格,然後把之後的下一個,依此類推。

+0

對不起,我只是看到了這個。謝謝! – Maverick

相關問題