我有一个Excel文件,大约10000行使用vlookup
,每行8 Vlookups
。它的速度非常慢。
它查找了另一个位于网上的excel文件 -
=IF(ISERROR(VLOOKUP(E12,'Filepath.xlsx]Data'!$U:BV,54,0)),"None",VLOOKUP(E12,Filepath.xlsx]Data'!$U:BV,54,0))
我环顾四周,vlookup似乎非常必要。是否存在可能使其更快的结构更改,例如SQL数据库上的vlookup?
由于
答案 0 :(得分:3)
根据我的评论,在这种情况下,使用具有已排序查找范围的LOOKUP
公式明显快于使用VLOOKUP
,快100倍,例如:如果我使用这个公式做一些速度测试
=VLOOKUP(B3, $D$3:$D$10002, 1,0)
然后使用G3:G10002包含与D3:D10002相同的值但按升序排序LOOKUP
公式
=IF(LOOKUP(B3, $G$3:$G$10002) = B3, LOOKUP(B3, $G$3:$G$10002), NA())
公式产生完全相同的结果,但第二个公式始终 120-140 快于第一个,因为"二元搜索的好处"
如果我使用INDEX/MATCH
等价物,即
=INDEX($D$3:$D$10002,MATCH(B3, $D$3:$D$10002,0))
然后,这实际上比VLOOKUP版本略慢,尽管如Doug所说,如果你在多个计算中使用相同的MATCH
公式,那么你可以计算一次仅用于多个结果,这样可能比VLOOKUP更有效
当然,您的设置中可能还有其他因素会降低计算速度......