網路問題:http://club.excelhome.net/thread-1393323-1-1.html
解法:
Sub test()
Dim Arr, Brr, Crr
Dim Row_A%, Row_B%, K%
'此處會將資料不同的地方記錄至數列Crr(K,J),因此先給定K = 1
K = 1
'用usedrange.rows.count抓出工作簿1工作表1 & 工作簿2工作表1的所有列數,在將此工作表的數值賦予給數列Arr & Brr
Row_A = Workbooks("測試1.xls").Worksheets(1).UsedRange.Rows.Count
Arr = Workbooks("測試1.xls").Sheets(1).Range("A13:K" & Row_A)
Row_B = Workbooks("測試2.xlsx").Sheets(1).UsedRange.Rows.Count
Brr = Workbooks("測試2.xlsx").Sheets(1).Range("A13:K" & Row_B)
'要先給Crr數列範圍,若不先給予範圍的話會跳出超過陣列索引的錯誤訊息
ReDim Crr(1 To Row_A, 1 To 10)
'因Arr(1,1) & Brr(1,1)實際上在工作表的儲存格為A13,故迴圈最後僅需到Row_A - 12即可
'當第二攔、第六欄、第十欄數值不同時,便會將該列賦予給Crr
'每當觸發一次IF後,Crr的列數K會自動+1,因此數列會按照順序排下來。
For i = 1 To Row_A - 12
If Arr(i, 2) <> Brr(i, 2) Or Arr(i, 6) <> Brr(i, 6) Or Arr(i, 10) <> Brr(i, 10) Then
For j = 1 To 10
Crr(K, j) = Arr(i, j)
Next j
K = K + 1
End If
Next i
Sheets(2).[A2].Resize(UBound(Crr, 1), UBound(Crr, 2)) = Crr
End Sub
留言列表