如何改善 LOOKUP 搜尋效能

你可以使用以下這類 LOOKUP 函式來搜尋資料中的資訊:

執行這類函式通常較花時間,本文將說明如何最佳化 LOOKUP 的效能及減少運算時耗用的電腦資源。

搭配排序範圍使用 LOOKUP 函式

如要提高排序效率,請使用「排序範圍」來替代 SORT 函式:

  1. 選取儲存格或資料欄。
  2. 在頂端的工作列上,依序按一下「資料」下一步「排序範圍」
  3. 選取下列其中一個選項:
    • 依欄 [範圍中最左側欄名] 排序選取範圍 (A 到 Z)
    • 依欄 [範圍中最左側欄名] 排序選取範圍 (Z 到 A)
    • 範圍排序進階選項:以階層順序一次排序多欄。

提示:「排序範圍」會先排序資料,然後將排序後的資料傳送至 VLOOKUP 函式。

不建議的做法:

重要事項:下一個範例將說明應該避免這樣使用 SORT 函式:

=VLOOKUP(搜尋值, SORT(A1:B10, 1), 2)

在這個範例中,SORT 以巢狀結構嵌入 VLOOKUP 函式中。每次排序範圍內的資料變更時,SORT 函式都會再次檢查所有資料,並重新執行一次 SORT 函式,但這是不必要的程序。

提示:在理想情況下,一組資料應該只套用 SORT 一次,方便你在需要時進行參照。

使用 LOOKUP 函式前先移除重複資料

如要加快運算速度,請移除整個資料集中重複的資料:

  1. 選取你需要的所有資料欄和資料列。
  2. 在頂端工作列上,依序按一下「資料」下一步「資料清除」下一步「移除重複內容」
  3. 選取要分析的資料欄。
  4. 按一下「移除重複內容」

提示:如果所選資料欄或資料列包含許多重複值,運算速度可能會變慢。

使用 LOOKUP 函式時需注意:

  • 此函式無法智慧偵測重複值
  • 此函式會搜尋整個資料集,包括不符合搜尋條件的所有重複值
在來源資料所在的同一份試算表中執行 LOOKUP

如要在本機電腦執行 LOOKUP 運算,請先將資料匯入你的試算表:

  1. 使用 IMPORTRANGE 將資料提取到要使用 LOOKUP 的同一份試算表的空白範圍內。請參閱這篇文章,進一步瞭解 IMPORTRANGE。
  2. LOOKUP 函式中將匯入的資料設為查詢範圍。

不建議的做法:

重要事項:下一個範例將說明應該避免這樣使用 IMPORTRANGE

=VLOOKUP(搜尋值, IMPORTRANGE(試算表網址, 範圍字串), 索引, [已排序])

在這個範例中,IMPORTRANGE 以巢狀結構嵌入 LOOKUP 函式中。每次執行 LOOKUP 時,系統都會先執行 IMPORTRANGE 提取資料,然後才對擷取的資料執行 LOOKUP 函式。

提示:盡量不要在 LOOKUP 函式中以巢狀結構嵌入任何函式。否則,每次執行 LOOKUP 函式時,嵌入 LOOKUP 中的內部函式都會額外執行不必要的運算。

使用 IFERROR() 或 IF() 陳述式略過特定搜尋值

如要加快 Google 試算表的運算速度,請使用 IF 陳述式略過重複的值,例如 N/A#ERRORREF# 或空白儲存格。

不建議的做法:

重要事項:下一個範例將說明應該避免這樣使用 VLOOKUP

在上述範例中,你可以使用 VLOOKUP 尋找 A 欄中各種水果的價格。不過,這份水果清單中含有很多空白儲存格。

Google 試算表會執行 B2 到 B10 中的公式,以尋找 A 欄中參照的所有搜尋值,即使其中包含空白,VLOOKUP 在運算時還是會依 B3、B7 和 B9 的公式進行搜尋,但這些空白搜尋值不會傳回任何有意義的結果。

建議的做法:

使用 IF 函式,即可根據所需條件略過這些無意義的搜尋值,只在水果清單中的資料非空白時,才執行 VLOOKUP

IF 函式會指示 Google 試算表:「如果搜尋值不等於空白,則執行你的公式。如果搜尋值等於空白,就不要執行你的公式,而改為輸出 N/A。」

一般來說,IF 函式適用於任何公式,而要略過的值也不一定是空白。這項技巧可以節省寶貴時間,因為如果含有無意義的值,計算結果時就可以略過不必要的運算。

除非你使用 IF 函式明確指定值,否則 Google 試算表無法判斷某個值是否具有意義。

=IF(A2 <> 要略過的值, 你的公式, "N/A")

提示:上述範例中的 IF 函式會告知 Google 試算表「如果 A2 不等於要略過的值,則執行你的公式。如果 A2 等於要略過的值,就不要執行你的公式,而改為輸出 N/A。」

請參閱這篇文章,進一步瞭解 IF 函式。

使用 INDEX 和 MATCH 來替代 VLOOKUP

雖然 VLOOKUP 的運算速度稍微快一點,但 INDEXMATCH 函式比較有彈性,可讓你將 LOOKUP 工作流程分割為多個小段。如此一來,就可以重複使用先前的結果以節省寶貴時間。

不建議的做法:

比方說,若要讓 VLOOKUP 在表格中找到「Apple」的價格和數量,你必須分別使用 2 個不同的 VLOOKUP 公式:

=VLOOKUP("Apple", $A$1:$C$4, 2, FALSE)

這個 VLOOKUP 內部會執行 2 個步驟:

  1. 找出「Apple」的所在位置。
  2. 到第二欄中搜尋「Apple」的價格。

=VLOOKUP("Apple", $A$1:$C$4, 3, FALSE)

這個 VLOOKUP 內部會執行 2 個步驟:

  1. 找出「Apple」的所在位置。
  2. 到第三欄中搜尋「Apple」的數量。

在上述 2 個公式中,第 1 個步驟都相同:在清單中找出「Apple」的所在位置。不過,這兩個公式的第 2 個步驟就無法同時執行了,因為 VLOOKUP 是只能輸出單一結果的單一函式。

所以,如果你使用 VLOOKUP 來尋找同一個項目的多項不同資訊,就必須執行第 1 個步驟兩次以上。這會增加運算時間。

建議的做法:

結合使用 MATCHINDEX 即可節省時間。這種做法可將步驟 1 和步驟 2 區隔開來,你可以視需要重複使用步驟 1 的結果:

1. 使用 MATCH 找出「Apple」的所在位置:

=MATCH("Apple", $A$2:$A$4, FALSE)

由於「Apple」位於範圍的第 1 個位置,因此這個公式的輸出值為「1」。

2. 使用 INDEX 在第二欄中搜尋「Apple」的價格:

=INDEX($A$2:$C$4, 參照MATCH公式所在儲存格, 2)

這個公式的輸出值為「$1」。

如要搜尋「Apple」的數量,你可以參照 MATCH 公式的所在儲存格,重複使用步驟 1 的結果,這樣就不必重新計算該部分。

3. 使用 INDEX 在第三欄中搜尋「Apple」的數量:

=INDEX($A$2:$C$4, 參照MATCH公式所在儲存格, 3)

在上述範例中,若結合使用 INDEXMATCH,就只需執行步驟 1 一次和步驟 2 兩次,共 3 個運算步驟。如果改為使用 VLOOKUP,則必須使用 2 個 VLOOKUP 函式共執行 4 個步驟,這樣會比較花時間並耗用較多運算資源。

使用越多 VLOOKUP 函式時,你得到的效率提升效果就越明顯。在許多其他情況下,你都可以重複使用 MATCH 傳回的結果來節省時間。

相關資源

還有其他問題嗎?

嘗試以下步驟:

true
造訪學習中心

您有在公司或學校使用 Google 文件等 Google 產品嗎?快來試試實用的秘訣、教學課程和範本,瞭解如何在不安裝 Office 的情況下處理 Office 檔案、建立動態專案計劃和小組日曆、自動整理收件匣及進行其他作業。

搜尋
清除搜尋內容
關閉搜尋
主選單
9793010398216537941
true
搜尋說明中心
true
true
true
true
true
35
false
false
false