- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
2#
發表於 2012-12-21 09:41
| 只看該作者
回復 1# tmde987
對於你的說明,不很了解,試看看是這方向嗎?- Sub CommandButton4_Click()
- With Workbooks.Open("C:\Documents and Settings\901755\桌面\捷徑(含manual)\2.xls")
- .Sheets(1).Range("B:C,O:O").Copy Workbooks("compareab_v3.xls").Sheets("資料A").Range("A1")
- .Sheets(1).Range("L:L").Copy Workbooks("compareab_v3.xls").Sheets("資料A").Range("D1")
- .Close
- End With
- End Sub
複製代碼- Sub CommandButton5_Click()
- 'Workbooks.Open Filename:="C:\Documents and Settings\901755\桌面\捷徑(含manual)\3.xls"
- With WorkbooksOpen("C:\Documents and Settings\901755\桌面\捷徑(含manual)\3.xls")
- .Sheets(1).Range("B:C,O:O").Copy Workbooks("compareab_v3.xls").Sheets("資料B").Range("A1")
- .Sheets(1).Range("L:L").Copy Workbooks("compareab_v3.xls").Sheets("資料B").Range("D1")
- .Close
- End With
- End Sub
複製代碼- Option Explicit
- Sub Ex_資料比對()
- Dim D As Object, Rng As Range, K As Variant, Msg As Boolean, xi As Integer
- Set D = CreateObject("SCRIPTING.DICTIONARY")
- Sheets("資料A").Cells.Font.ColorIndex = 0
- Sheets("資料B").Cells.Font.ColorIndex = 0
- Sheets("資料A缺少的").Cells.Clear
- Sheets("資料B缺少的").Cells.Clear
- Set Rng = Sheets("資料A").[A1]
- Do While Rng <> ""
- Set D(Rng & Rng(1, 2)) = Rng.Resize(, 4)
- Set Rng = Rng.Offset(1)
- Loop
- Set Rng = Sheets("資料B").[A2]
- Do While Rng <> ""
- Msg = False
- If D(Rng & Rng(1, 2)).Cells(3) <> Rng(1, 3) Then
- Msg = True
- D(Rng & Rng(1, 2)).Cells(3).Font.Color = vbRed
- Rng(1, 3).Font.Color = vbRed
- End If
- If D(Rng & Rng(1, 2)).Cells(4) <> Rng(1, 4) Then
- Msg = True
- D(Rng & Rng(1, 2)).Cells(4).Font.Color = vbRed
- Rng(1, 4).Font.Color = vbRed
- End If
- If Msg = True Then
- xi = xi + 1
- Sheets("資料A缺少的").Cells(xi, "a").Resize(1, 4) = D(Rng & Rng(1, 2)).Value
- Sheets("資料B缺少的").Cells(xi, "a").Resize(1, 4) = Rng.Resize(1, 4).Value
- Else
- D.Remove (Rng & Rng(1, 2))
- End If
- Set Rng = Rng.Offset(1)
- Loop
- With Sheets("資料A與B都有的")
- If D.Count > 0 Then
- .Cells.Clear
- xi = 1
- For Each K In D.KEYS
- .Cells(xi, "a").Resize(1, 4) = D(K).Value
- xi = xi + 1
- Next
- End If
- End With
- End Sub
複製代碼 |
|