|
厉遍比较
Sub 查询匹配()
Dim Arr, i&, Myr&, Brr '定义变量arr、myr、brr
Dim d '定义变量d
Set d = CreateObject("Scripting.Dictionary") '设置d为字典变量
Application.ScreenUpdating = False '设置屏幕停止更新
Sheets("整理数据").Activate '激活整理数据表
Arr = Sheets("投保名单").[a1].CurrentRegion '选择工作表整个区域
For i = 2 To UBound(Arr) '循环从第2行开始到选定区域上界次数
d(Arr(i, 3)) = i '从第3列第2行开始这一列每行赋值给字典d,Arr(i,3)这是数组啊,如果i=2开始,下标默认为0,循环不是从单元格C3开始吗?那单元格C2不是漏掉了吗?
Next
Myr = Cells(Rows.Count, 1).End(xlUp).Row '取第一列最后非空行的行号?这个第一列是整理数据表的第一列吧?
Brr = Range("b1:b" & Myr) 'b1:bMyr单元格区域的值赋给数组brr 假如Myr=100,则Range("a1:b" & Myr)=Range("a1:b100")
For i = 2 To UBound(Brr) '循环从第2行开始到选定区域上界次数
If d.exists(Brr(i, 1)) Then '用字典exists方法循环比较
Cells(i, 3) = Arr(d(Brr(i, 1)), 2)
Cells(i, 4) = Arr(d(Brr(i, 1)), 4)
Cells(i, 5) = Arr(d(Brr(i, 1)), 5)
Cells(i, 6) = Arr(d(Brr(i, 1)), 6)
Cells(i, 7) = Arr(d(Brr(i, 1)), 7)
Else
Cells(i, 4) = "没有参保数据"
End If
Next
Application.ScreenUpdating = True
End Sub
|
|