2014-11-24 563 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更有效率在所有

當然可能還有其他因素在你的設置,其中在減速計算.....