VBA字典实现VLOOKP匹配

2025-04-23 18:01:19
推荐回答(2个)
回答1:

A列是不是长数字(手机号、银行卡号、身份证号这些),是的话试试看下面的代码,只修改了两行:

Sub test()
    Dim arr, brr, d, i
    Dim t
    t = Timer
    Set d = CreateObject("scripting.dictionary")
    arr = Sheet1.Range("a2:b145333")
    '''''''''''''''''''''''''''''''建立字典''''''''''''''''''''''''''''''''''''''''
    For i = 1 To UBound(arr)
        d(Trim(arr(i, 1))) = arr(i, 2) '通过循环,把要进行查询的源表中的关键字成为字典中的关键字以及关键字所对应的项
    Next
    '''''''''''''''字典建立完毕''''''''''''''''''''''''''''''''
    
    brr = Sheet1.Range("c2:d" & Cells(Rows.Count, 3).End(xlUp).Row)
    For i = 1 To UBound(brr)
        brr(i, 2) = d(Trim(brr(i, 1))) '用这个d(brr(i, 1)) ,取得brr(i,1)里的关键字,在前面所建立的字典中所对应的项。赋值给数组brr的第二列。
    Next
    ''''''''''''''写出数组''''''''''''''''''''''''''''''''''''''''''''''
    Sheet1.Range("c2").Resize(UBound(brr), UBound(brr, 2)) = brr
    Set d = Nothing
    MsgBox "程序运行时间为" & Timer - t
End Sub

回答2:

加入C,D两列都是要查找的项目(对应A列),把查找到的内容放到E,F两列怎么办呢