我做了很多搜索,无法找到这个具体案例的答案。
我的数据集大约是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:A;并将值放在Q列中。 但是,我想从' CC Map'!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中的第二个参数,但我试图避免循环。 我现在所拥有的几乎立刻就会出现。
答案 0 :(得分:0)
如果返回值是文本,则可以使用:
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。