VBA评估指数匹配

时间:2016-05-27 11:34:47

标签: vba excel-vba excel

我做了很多搜索,无法找到这个具体案例的答案。

我的数据集大约是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中的第二个参数,但我试图避免循环。 我现在所拥有的几乎立刻就会出现。

1 个答案:

答案 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。