VBA检查一列中的值是否存在于另一列中,如果存在,则传输相关数据
我的代码(如下)在一定程度上完成了这项工作。我的问题是,如何获取列B、C和D中的数据,以匹配到Tab1的传输 此时,代码查看Tab0中A列中的值,然后检查它们是否存在于tab1的A列中,如果没有,则将它们添加到底部 我当前的代码:VBA检查一列中的值是否存在于另一列中,如果存在,则传输相关数据,vba,Vba,我的代码(如下)在一定程度上完成了这项工作。我的问题是,如何获取列B、C和D中的数据,以匹配到Tab1的传输 此时,代码查看Tab0中A列中的值,然后检查它们是否存在于tab1的A列中,如果没有,则将它们添加到底部 我当前的代码: Sub MovenMatch() Dim varfirst1 As Range, varsecond2 As Range Dim n&, m& Dim first1 As Range, second2 As Range Dim rowCount1&
Sub MovenMatch()
Dim varfirst1 As Range, varsecond2 As Range
Dim n&, m&
Dim first1 As Range, second2 As Range
Dim rowCount1&, rowCount2&
Dim mFlag As Boolean
rowCount1 = Sheets("Tab0").Cells(Sheets("Tab0").Rows.Count, "A").End(xlUp).Row
rowCount2 = Sheets("Tab1").Cells(Sheets("Tab1").Rows.Count, "A").End(xlUp).Row
Set varfirst1 = Sheets("Tab0").Range("A2:A" & rowCount1)
Set varsecond2 = Sheets("Tab1").Range("A2:A" & rowCount2)
m = rowCount2 + 1
For Each first1 In varfirst1
mFlag = False
For Each second2 In varsecond2
If CStr(first1) = CStr(second2) Then
mFlag = True
Exit For
End If
Next second2
If mFlag = False Then
Sheets("Tab1").Range("A" & m).Value = first1
“我的假设是,修复程序应该出现在这里,替换“xyz”
:
Sheets("Tab1").Range("B" & m).Value = "xyz"
m = m + 1
End If
Next first1
End Sub
集合是匹配唯一标识符的理想选择。我的代码将单元格引用与唯一ID一起存储,以简化任务
Sub MovenMatch2()
Dim cell As Range, dict As Object
Set dict = CreateObject("Scripting.Dictionary")
With ThisWorkbook.Worksheets("Tab1")
For Each cell In .Range("A2", .Range("A" & .Rows.count).End(xlUp))
Set dict(cell.Value) = cell
Next
End With
With ThisWorkbook.Worksheets("Tab0")
For Each cell In .Range("A2", .Range("A" & .Rows.count).End(xlUp))
If dict.Exists(cell.Value) Then
dict(cell.Value).Resize(1, 4).Value = cell.Resize(1, 4).Value
Else
With ThisWorkbook.Worksheets("Tab1")
.Range("A" & .Rows.count).End(xlUp).Offset(1).Resize(1, 4).Value = cell.Resize(1, 4).Value
End With
End If
Next
End With
End Sub