我已經搜索了很多且未找到此問題的良好答案。VBA - 將兩列中的單元格與其他兩列中的單元格進行比較
我有兩個列表,每列兩列。清單包含經銷商編號(A欄)和經銷商的零件編號(B欄)。相同的值可能會在每列中出現重複(每個經銷商有幾個零件號碼,每個零件號碼可能會出現在幾個經銷商處)。
我希望腳本用A1和B1在Sheet開始,檢查是否兩個細胞具有Sheet 2中的匹配 - 列A和列B中,如果是標記在A1爲紅色的等效電池,然後移動到A2 + B2再次進行相同的比較。換句話說,它應該檢查第1頁中的第1行,將其與Sheet2中的每一行進行比較以匹配,如果存在匹配,則將Sheet1中的A單元格標記爲紅色,然後移至Sheet1中的下一行。
這裏是我遇到問題的地方;我似乎無法使腳本變得靈活。我的腳本似乎沒有檢查Sheet1中的單元格A和B,也沒有檢查每個循環的表格2中的全部範圍。
在接下來的步驟中,我還希望腳本檢查Sheet2中的第三列是否高於Sheet1中的相應單元格,但是我應該能夠處理該基礎知識。
這裏是我的代碼現在的樣子:
Sub Comparestwocolumns()
Dim i As Long
Dim lastrow As Long
Dim ws As Worksheet
Set ws = Sheet1
Set ws2 = Sheet2
For i = 1 To 500000
If IsEmpty(ws.Range("A" & i)) = True Then
Exit For
End If
For j = 1 To 500000
If IsEmpty(ws2.Range("A" & j)) = True Then
Exit For
End If
If ws.Range("A" & i).Value = ws2.Range("A" & j).Value Then
If ws.Range("A" & i).Offset(0, 1).Value = ws2.Range("A" & j).Offset(0, 1).Value Then
ws.Range("A" & i).Interior.Color = vbRed
Else
ws.Range("A" & i).Interior.Color = vbWhite
End If
Exit For
End If
Next j
Next i
MsgBox ("Finished ")
End Sub
謝謝!
@andreashansson,你通過了嗎? – user3598756
謝謝大家的幫助!它不僅工作(我檢查了兩個第一個答覆),但它在理解VBA的邏輯方面給了我很大的幫助。我甚至設法做了一些調整。 –
不客氣。那麼您可能想要將最符合您需求的答案標記爲已接受。 – user3598756