close

網路問題: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
 

arrow
arrow
    文章標籤
    VBA 數列
    全站熱搜

    chrisovo 發表在 痞客邦 留言(0) 人氣()