如何用VBA比較兩個EXCEL工作表

2024/01/16閱讀時間約 3 分鐘

為什麼要比較Excel 工作表(Worksheet)

工作中,常常會儲存多個同一目的,但不同時間的工作。或者,有時要檢查兩個人做的EXCEL工作表,是否有所不同。當然,若工作表很小,肉眼看是最快的,但是,如果是庫存的大量資料如1萬筆以上的財務資訊等,這時靠肉眼看,速度實在是太慢了,而且也容易出錯。

 

當然另外一種方式是另起一個工作表,譬如說,如要檢查工作表A 和 工作表B的不同,主要另起一個工作表C ,令工作表C的每一欄位其公式為工作表A的欄位-工作表C的欄位就可以了。

可行的VBA程式碼

不過,聰明的人還是喜歡用可以偷懶的方式。可行的VBA程式碼如下

Sub Compare_Two_Worksheets()
Application.Calculation = xlCalculationManual '先關掉EXCEL 裏的自動計算功能
Dim iR As Double, iC As Double '計數用的
Dim iRow_M As Double, iCol_M As Double '定義要比較到的最大列及最大欄
Dim source1_sheet As Worksheet, source2_sheet As Worksheet
Set source1_sheet = ThisWorkbook.Worksheets(SHEETNAME1) '這裏要指定SHEETNAME1為工作表名稱
Set source2_sheet = ThisWorkbook.Worksheets(SHEETNAME2) '這裏要指定SHEETNAME2為工作表名稱
iRow_M = source1_sheet.UsedRange.Rows.Count '這裏確定要比較到的最大列
iCol_M = source1_sheet.UsedRange.Columns.Count '這裏確定要比較到的最大欄

For iR = 1 To iRow_M
For iC = 1 To iCol_M
If (source1_sheet.Cells(iR, iC).Value <>source2_sheet.Cells(iR, iC).Value) Then
source1_sheet.Cells(iR, iC).Interior.ColorIndex = 6 '用黃色標註
source2_sheet.Cells(iR, iC).Interior.ColorIndex = 6
End If
Next iC
Next iR

Application.Calculation = xlAutomatic '重新打開自動計算功能

End Sub

 希望常常在比較EXCEL的上班族,可以用的上。

當然還有一些可以再調整的地方,譬如說,把比對不同的資訊,再寫在另外一個工作表上。

留言0
查看全部
發表第一個留言支持創作者!