如何改善 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 檔案、建立動態專案計劃和小組日曆、自動整理收件匣及進行其他作業。

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