2012-08-10 107 views

回答

0

小除了現有的代碼:

Sub Compare_Sheets() 

Dim v1,v2 
Dim diffRow as long 

Set From_WS = Workbooks("Book1").Worksheets("Sheet1") 
Set To_WS = Workbooks("Book2").Worksheets("Sheet2") 
Set diffWS = Thisworkbook.Sheets("Diff") 

diffRow = 1 

With From_WS.Cells(1, 1).CurrentRegion 
    Total_Rows = .Rows.Count 
    Total_Columns = .Columns.Count 
End With 

For Rows_Counter = 1 To Total_Rows 
For Column_Counter = 1 To Total_Columns 
v1 = Trim(LCase(From_WS.Cells(Rows_Counter, Column_Counter).Value)) 
v2 = Trim(LCase(To_WS.Cells(Rows_Counter, Column_Counter).Value)) 

If v1 <> v2 Then 
    From_WS.Cells(Rows_Counter, Column_Counter).Interior.ColorIndex = 4 
    To_WS.Cells(Rows_Counter, Column_Counter).Interior.ColorIndex = 5 

    With diffWS.Rows(diffRow) 
     .Cells(1).value=From_WS.Cells(Rows_Counter, Column_Counter).Address() 
     .Cells(2).value = v1 
     .Cells(3).value= v2 
     diffRow = diffRow + 1 
    End With 

End If 

Next Column_Counter 
Next Rows_Counter 

End Sub 
+0

蒂姆,我只是工作表Sheet1和當前工作簿Sheet2的測試,它似乎並沒有工作。 Total_Rows和Total_Columns評估爲1.也許我錯過了什麼? – 2012-08-11 04:07:16

+0

這很好,雖然... http://www.exceltip.com/st/Compare/two_worksheets_using_VBA_in_Microsoft_Excel/477.html – 2012-08-11 04:09:01

+0

嗯,我只重構了OP指向的帖子中的代碼,所以我認爲這是爲他們工作。它確實取決於具有從A1開始佈置的相同數據的兩張... – 2012-08-11 07:14:02

相關問題