2013-09-27 67 views
-1

我有Excel工作表,其中包含超過20個電子表格和每個電子表格包含超過1000行。我在Linux環境中使用python程序生成此Excel表單。 但我也可以將這些文件放入windows環境中。是否可以將兩張Excel表格與電子表格數據進行比較?是否有人使用Windows中的任何工具,Linux和Excel的財產或Python來比較數據比較Excel文件的值與多個電子表格

回答

1

我同意沒有谷歌它的負面點。有時我犯了這個錯誤。非常感謝您的回覆。但是我發現下面的工具比較兩個Excel.anyway它正在編程。只是FYi如果你正在尋找這樣的工具。

http://www.florencesoft.com/

1

VBA是最明顯的解決方案的電子表格表。
將每個工作表的使用範圍加載到一個數組中並遍歷數組。
不要在範圍內循環,因爲這需要時間。

寫上飛作爲它的工作原理基本例如一些代碼。 根據您想要比較的方式和方式,您可以進行自定義。無論如何,這只是一般原則。

Dim lCnt_A as Long 
Dim lCnt_B as Long 
Dim vArray_1 as variant 
Dim vArray_2 as variant 
Dim oRange_1 as Excel.range 
Dim oRange_2 as Excel.range 
Dim lCnt_Rows as Long 
Dim lCnt_Cols as Long 

'Don't do this: 
for lCnt_A = 1 to 5000 
    for lCnt_B = 1 to 100 
     if thisworkbook.sheets(1).cells(lCnt_A, lCnt_B).value <> Thisworkbook.sheets(2).cells(lCnt_A, lCnt_B).value Then 
      Msgbox ("Difference spotted in cell" & thisworkbook.sheets(1).cells(lCnt_A, lCnt_B).Address) 
     end if 
    next lCnt_B 
next lCnt_A 


'But rather this, it's faster: 
set oRange_1 = thisworkbook.sheets(1).usedrange 
set oRange_2 = thisworkbook.sheets(2).usedrange 
lCnt_Rows = oRange_1.rows.count 
lCnt_Cols = oRange_1.rows.count 

redim vArray_1(1 to lCnt_Rows, 1 to lCnt_Cols) 
redim vArray_2(1 to lCnt_Rows, 1 to lCnt_Cols) 

vArray_1 = oRange_1 
vArray_2 = oRange_2  

for lCnt_A = 1 to 5000 
    for lCnt_B = 1 to 100 
     if vArray_1(lCnt_A, lCnt_B) <> vArray_2(lCnt_A, lCnt_B) then 
      Msgbox ("Difference spotted in row " & lCnt_A & " and column " & lCnt_B) 
     end if 
    next lCnt_B 
next lCnt_A