2014-11-24 523 views
1

我有一个Excel文件,每行约10000行,使用vlookup约8 Vlookups。其可笑的慢。Excel Vlookup太慢

它查找另一个Excel位于在线文件 -

=IF(ISERROR(VLOOKUP(E12,'Filepath.xlsx]Data'!$U:BV,54,0)),"None",VLOOKUP(E12,Filepath.xlsx]Data'!$U:BV,54,0)) 

我环顾四周,并vlookups似乎是相当必要的。有没有可能使这种情况更快发生的结构性变化,例如SQL数据库上的vlookup?

由于

+4

[IFERROR] (http://www.excel-easy.com/examples/iferror.html)可能会节省一些查找,INDEX/MATCH可能会更快。 – pnuts 2014-11-24 18:04:58

+3

尝试切换到索引/匹配组合。这将允许您每行只进行一次匹配。另外,看看:http://dailydoseofexcel.com/archives/2014/11/17/cult-of-the-flying-spaghetti-vlookup/ – 2014-11-24 18:08:44

+0

谢谢你们,但我正在寻找更快的方式,大约50 %最低。我工作的东西应该是一台计算机,称为VDI,这是一个路由器的大小。它总是用Excel缓慢,但是因为这个更新很荒谬。我假设没有Excel公式可以给这种类型的增加,所以认为我可能必须首先更改数据格式?不是开发人员。 – 2014-11-24 18:46:11

回答

3

按我的意见,使用LOOKUP式与一个有序的查找范围是显著快于在这种情况下使用VLOOKUP,更快100倍以上,例如做一些速度测试,如果我使用此公式

=VLOOKUP(B3, $D$3:$D$10002, 1,0)

,然后用G3:含有相同的值D3 G10002: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版本慢,但正如道格说,如果你正在使用多个计算同一MATCH公式,那么你可以计算曾经只用于多个结果,这样可以比VLOOKUP更有效率在所有

当然可能还有其他因素在你的设置,其中在减速计算.....