我有以下代码:
Dim i As Long
Dim J As Integer
Dim LastRow As Long
Dim a As Worksheet
Dim b As Worksheet
Set a = Workbooks("500 PRO").Worksheets(1)
Set b = ActiveSheet
LastRow = a.Cells(Rows.Count, "A").End(xlUp).Row
For i = 2 To LastRow
If Not IsError(Application.Match(a.Cells(i, 2).Value, b.Columns(2), 0)) Then
Set FindRow = b.Columns(2).Find(a.Cells(i, 2))
J = FindRow.Row
If IsEmpty(b.Cells(J, 6)) = True Then
b.Cells(J, 6).Value = a.Cells(i, 10).Value
End If
If IsEmpty(b.Cells(J, 7)) = True Then
b.Cells(J, 7).Value = a.Cells(i, 14).Value
End If
End If
Next i
不幸的是,使用应用程序匹配仅查看列中的第一个数字,而不是完整的数字。
我尝试过类似的事情:
If Not IsError(Application.Find(a.Cells(i, 2).Value, b.Columns(2), 0)) Then
但是同样的问题也是如此。
代码正在比较两个工作表中的值a和b。这些是身份证号码。如果两个ID号匹配,则检查第一个工作表上的两个值是否为空,如果是,则从第二个工作表中获取缺失值。
答案 0 :(得分:0)
我无法确定,因为您未提供要使用的示例数据,但要成功使用Range.Find
,请尝试以下操作:
Dim foundCell As Range
With b.Columns(2)
For i = 2 To LastRow
If a.Cells(i, 2) <> "" Then
Set foundCell = .Find(what:=a.Cells(i, 2), _
lookat:=xlWhole, _
LookIn:=xlValues, _
MatchCase:=False)
If Not foundCell Is Nothing Then
'...
'check for blanks and copy
'...
End If
End If
Next i
End With