我已经做了相当多的搜索,但找不到这个特定情况的答案。
我的数据集有~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。