SUB 代替VLOOKUP()
方法一:
Dim d, ar, br, cr, wb As Workbook
Set d = CreateObject("Scripting.Dictionary")
br = Worksheets("Sheet1").[A1].CurrentRegion '需要配置的數據表
ar = Worksheets("R").[A1].CurrentRegion '目標表
ReDim CRR(1 To UBound(br) - 1, 1 To 1) '配置表的循環列數
For I = 2 To UBound(ar) '從目標表需要關聯的字段
d(ar(I, 4)) = ar(I, 6)
Next
For I = 2 To UBound(br)
CRR(I - 1, 1) = d(br(I, 4)) '將CRR寫到BRR表中
Next
Worksheets("Sheet1").Range("EJ2").Resize(UBound(br), 1) = CRR '匹配
方法二:
Dim arr, d As Object, CRR '
Set d = CreateObject("scripting.dictionary")
arr = Worksheets("基礎信息表").[a1].CurrentRegion
brr = Worksheets("統計結果").[a1].CurrentRegion
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 6)
Next
ReDim CRR(2 To UBound(brr), 1 To 1) '匹配目標表內容
For J = 2 To UBound(brr)
CRR(J, 1) = d(brr(J, 2))'''在字典里查找BRR值並返回相應值
Next
Worksheets("統計結果").[C2].Resize(UBound(CRR) - 1, 1) = CRR
Set d = Nothing
方法三:多列
Dim arr, d As Object, CRR '數組brr用來存放求和數據 '創建字典
Set d = CreateObject("scripting.dictionary") '數組賦值
arr = Worksheets("基礎信息表").[a1].CurrentRegion '重置數組brr大小
brr = Worksheets("統計結果").[a1].CurrentRegion
For i = 2 To UBound(arr)
d(arr(i, 1)) = arr(i, 6) & "," & arr(i, 7)
Next
ReDim CRR(2 To UBound(brr), 1 To 1)
ReDim DRR(2 To UBound(brr), 1 To 1)
For J = 2 To UBound(brr)
If d(brr(J, 2)) <> "" Then
CRR(J, 1) = Split(d(brr(J, 2)), ",")(0) '在BRR里查找到此名,並返回對應值
DRR(J, 1) = Split(d(brr(J, 2)), ",")(1)
Else
CRR(J, 1) = ""
DRR(J, 1) = ""
End If
Next
Worksheets("統計結果").[C2].Resize(UBound(CRR) - 1, 1) = CRR
Worksheets("統計結果").[D2].Resize(UBound(CRR) - 1, 1) = DRR
Set d = Nothing
END SUB
————————————————
版權聲明:本文為CSDN博主「qq_44390640」的原創文章,遵循CC 4.0 BY-SA版權協議,轉載請附上原文出處鏈接及本聲明。
原文鏈接:https://blog.csdn.net/qq_44390640/java/article/details/98486565