此代碼假定您的舊列表和新列表是單獨的牀單。您將需要編輯代碼以反映實際的工作表名稱。如果找到所有重複的名稱,然後檢查城市是否已更改。如果城市發生了變化,它會在舊清單和新清單上突出顯示該城市。
編輯:沒有測試,但嘗試這樣的事情!查找名稱匹配,在兩張表上設置與該名稱關聯的給定範圍的位置,比較單元格並突出顯示在兩個範圍內都找不到的單元格。請記住,這隻適用於出現在兩張紙上的名稱。
編輯2:代碼更新 - 測試和工作。
Sub DupChange()
Dim CurRow, LastRow, DestRow, DestLast, ChkRow, DestChk As Long
Dim OldL, NewL As Worksheet
Dim ChkRng, DestRng As Range
Dim ChkCel, DestCel As Range
Set OldL = Sheets("Old List")
Set NewL = Sheets("New List")
LastRow = OldL.Range("B" & Rows.Count).End(xlUp).Row
DestLast = NewL.Range("B" & Rows.Count).End(xlUp).Row
For CurRow = 2 To LastRow '(assuming you have a header in row 1)
If Not OldL.Cells(CurRow, 1).Value = "" Then
ChkRow = OldL.Cells(CurRow, 1).End(xlDown).Row - 1
If ChkRow > LastRow Then
ChkRow = LastRow
Else
End If
Set ChkRng = OldL.Range("A" & CurRow & ":A" & ChkRow).Offset(0, 1)
For DestRow = 2 To DestLast
If OldL.Cells(CurRow, 1).Value = NewL.Cells(DestRow, 1).Value Then
DestChk = NewL.Cells(DestRow, 1).End(xlDown).Row - 1
If DestChk > DestLast Then
DestChk = DestLast
Else
End If
Set DestRng = NewL.Range("A" & DestRow & ":A" & DestChk).Offset(0, 1)
For Each ChkCel In ChkRng
If DestRng.Find(ChkCel.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
ChkCel.Interior.Color = RGB(255, 0, 0)
Else
End If
Next
For Each DestCel In DestRng
If ChkRng.Find(DestCel.Value, LookIn:=xlValues, LookAt:=xlWhole) Is Nothing Then
DestCel.Interior.Color = RGB(255, 0, 0)
Else
End If
Next
Else
End If
Next DestRow
Else
End If
Next CurRow
End Sub
給我們一個你在excel文件和結構以及預期結果列中的真正截圖。這將有很大的幫助 – AHC 2014-12-01 16:19:30
我正在嘗試,但說我需要10點聲望張貼圖像。任何其他方式發佈樣本列表 – 2014-12-01 16:20:56
使用免費的圖像共享網站和編輯您的文章的鏈接。 – Chrismas007 2014-12-01 16:24:59