2016-11-24 5 views
1

私は120種類のExcelの生データファイルを用意していますが、1つの概要ワークブックに500種類以上の異なるセルから表形式にデータを取り込む必要があります。これを行う最も効率的な方法は何ですか?500+セル参照と120個のワークブック

各ワークブックのレイアウトは同じです。新しい概要シートを最初のデータファイルのセルにリンクし始め、findとreplaceを使用してパスを変更して他のデータファイルを参照することを計画していました。それは最も難しいと言わざるを得ない!

私もPythonを学んでいますので、Pythonベースのソリューションを歓迎するか、まったくの解決策があります。

は、

ジョー

+0

あなたはSQLとADOでそれを行うことができます –

+0

@Nathan_Savご回答いただきありがとうございます!何も経験がない人にとっては、これを行うことを学ぶ価値がありますか?それとも、私が現在やっていることをやるよりも、学習に時間がかかりますか? – Maverick

+0

特定のディレクトリにあるすべてのファイルを開き、誰かから特定の値をコピー/ペーストするVBAスクリプトを作成するのは比較的簡単ですが、もちろん多くのブックを1つずつ計算するのに時間がかかります。参照してください:http://stackoverflow.com/questions/10380312/loop-through-files-in-a-folder-using-vba – Limak

答えて

1

Pythonは多くのモジュールを提供しています、ありがとうございました。 openpyxlモジュールをお勧めします。あなたはそれについてhereを読むことができます。私があなたを正しく理解していれば、複数のExcelスプレッドシートを組み合わせたいと思っています。私がwoudlそれを行う方法は、すべての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ファイルを通過し、新しいスプレッドシートに入れ、次にようにその次の1を入れ、そしてだろう:私はこれを行うための簡単なプログラムを書きました。

+0

申し訳ありませんが、どういうわけか私はちょうどこれを見たことがあります。ありがとうございました! – Maverick

関連する問題