01
使用 INDEX 和 MATCH 或 OFFSET 而不是 VLOOKUP
雖然 VLOOKUP 比 MATCH 和 INDEX,或 OFFSET 組合的速度稍快(大約快 5%)、更簡單,並使用更少的內存,但 MATCH 和 INDEX 所提供的額外靈活性通常可以顯著節省時間。例如,可以將完全 MATCH 的結果存儲在單元格中,並在幾個 INDEX 語句中重用。INDEX 函數是快速運行的不變函數,它可以加快重新計算的速度。 OFFSET 函數的運行速度也很快;但它是可變函數,因此有時會顯著增加處理計算鏈所需的時間。可輕松將 VLOOKUP 轉換為 INDEX 和 MATCH。以下兩個語句返回相同結果:
02
SORT的應用
由於完全匹配查找可能很慢,因此可以考慮使用以下選項來提高性能:
03
對缺少值的排序數據使用兩個查找
對於在數行內執行的查找,兩個近似匹配顯著快於壹個完全匹配。 (分界點是大約 10-20 行。)
如果可以對數據排序,但由於不能確定要查找的值是否位於查找範圍內而仍無法使用近似匹配,則可以使用以下公式:
公式第壹部分的運作方式是對查找列本身執行近似查找
可以使用以下公式檢查從查找列得到的結果是否與查找值相同(在這種情況下,妳有壹個完全匹配項):
如果此公式返回“True”,則找到了完全匹配項,所以可以再次執行近似查找,但這次從列中返回所需的結果。
如果從查找列得到的結果與查找值不匹配,則表示它是缺失值,公式將返回“notexist”。
註意,如果查找的值小於列表中的最小值,則會收到錯誤。可以使用 IFERROR 來處理此錯誤,或者向列表添加壹個小的測試值。
04
對於缺少值的未排序數據,使用 IFERROR 函數
如果必須對未排序數據使用完全匹配查找,但是不能確定查找值是否存在,通常必須處理找不到匹配項時返回的 #N/A。從 Excel 2007 開始,可以使用 IFERROR 函數,該函數既快又簡單。
在早期版本中,壹個簡單但較慢的方法是使用包含兩個查找的 IF 函數。
如果使用完全 MATCH 壹次,將結果存儲在單元格中,然後在執行 INDEX 之前測試結果,則可以避免雙重完全查找。
如果無法使用兩個單元格,則使用 COUNTIF。它通常比完全匹配查找速度快。
05
使用 MATCH 和 INDEX 對多個列進行完全匹配查找
通常可以多次重復使用存儲的完全 MATCH。例如,如果要對多個結果列執行完全查找,則可以使用壹個 MATCH 和多個 INDEX 語句(而不是多個 VLOOKUP 語句)來節省時間。為 MATCH 添加壹個額外的列來存儲結果 ( stored_row ),並對每個結果列使用以下語句:
或者,可以在數組公式中使用 VLOOKUP。(必須使用 Ctrl+-Shift+Enter 輸入數組公式。Excel 將添加 { and },以顯示這是壹個數組公式)。