- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
回復 10# ii31sakura - Option Explicit
- Sub Ex()
- Dim d As Object, Rng As Range, S As String
- Set d = CreateObject("scripting.dictionary")
- Set Rng = Sheets("比對data").Range("A2")
- Do While Rng <> ""
- d(Rng & Rng.Cells(1, 2) & Rng.Cells(1, 3)) = ""
- Set Rng = Rng.Cells(2, 1)
- Loop
- Set Rng = Sheets("來源data").Range("A2")
- Do While Rng <> ""
- If d.EXISTS(Rng & Rng.Cells(1, 2) & Rng.Cells(1, 3)) Then
- If d.EXISTS("比對到") Then
- Set d("比對到") = Union(Rng.Resize(, 3), d("比對到"))
- Else
- Set d("比對到") = Rng.Resize(, 3)
- End If
-
- S = IIf(S <> "", S & vbLf, "") & Rng.Address(0, 0) & " 找到 " & Rng & "-" & Rng.Cells(1, 2) & "-" & Rng.Cells(1, 3)
- End If
- Set Rng = Rng.Cells(2, 1)
- Loop
- If S <> "" Then
- d("比對到").Parent.Activate
- d("比對到").Select
- MsgBox "來源data " & vbLf & S
- End If
- End Sub
- Sub Ex3()
- Dim Rng(1 To 2) As Range, Rng2_Address As String
- Set Rng(1) = Worksheets("比對data").Range("A2") '比對data的第一筆資料(日期)
- Sheets("來源data").UsedRange.Offset(1).Interior.ColorIndex = xlNone
- Do While Rng(1) <> "" '執行到條件不成立
- With Sheets("來源data").Range("A:A") '範圍:這工作表的A欄
- Set Rng(2) = .Find(Rng(1), AFTER:=.Cells(1), LookIn:=xlFormulas) '搜尋日期:要用公式LookIn:=xlFormulas
- Do While Not Rng(2) Is Nothing '執行到條件不成立
- If Rng2_Address = "" Then Rng2_Address = Rng(2).Address '記錄第一次找到的位置
- If Rng(1).Cells(1, 2) = Rng(2).Cells(1, 2) And Rng(1).Cells(1, 3) = Rng(2).Cells(1, 3) Then '
- ' Rng(1).Cells(1, 3) = Rng(2).Cells(1, 3) '比對的第二欄=來源data的第二欄
-
- Rng(1).Cells(1, 4) = Rng(2).Row '此段為找該資料的row
- Rng(2).Resize(, 3).Interior.Color = vbYellow
-
- Exit Do
- End If
- Set Rng(2) = .FindNext(Rng(2)) '繼續往下搜尋
- If Rng2_Address = Rng(2).Address Then '回到第一次找到的位置
- Exit Do '離開迴圈
- End If
- Loop
- Rng2_Address = ""
- Set Rng(1) = Rng(1).Offset(1) '比對data的下一筆資料(日期)
- End With
- Loop
- End Sub
複製代碼 |
|