VBA 评估索引匹配



我已经做了相当多的搜索,但找不到这个特定情况的答案。

我的数据集有~650k行长,所以我一直在努力使代码尽可能快。我正在尝试做的是让 VBA 将整列与另一张工作表进行索引匹配。

到目前为止,我的代码是VB:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Range("Q2:Q" & LastRow).Value = Evaluate("INDEX(MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0),0)") 

这很快将 C 列与工作表"CC 地图"进行了比较!答:A;并将值放在 Q 列中。但是,我想从"CC 映射"返回相应的值!B:B

当我使用.VB:

LastRow = Cells(Rows.Count, "A").End(xlUp).Row 
Range("Q2:Q" & LastRow).Value = Evaluate("INDEX('CC Map'!B:B,MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0))") 

它返回每个相同的值(对应于匹配 C2...)

我认为问题在于将数组作为 INDEX 中的第二个参数,但我试图避免循环。我现在拥有的东西几乎是立即运行的。

如果返回值是文本,则可以使用:

Range("Q2:Q" & LastRow).Value = Evaluate("INDEX(IF(1,T(OFFSET('CC Map'!B1,MATCH(C2:C" & LastRow & ",'CC Map'!A:A,0)-1,0))),)")

对于数值,请将 T 替换为 N。

最新更新