在test.xlsx文檔的'標簽1'的E到K列中查詢E3單元格,查找后把F列輸出出來
從E向K數數,E是1,F是2,。。。
最后一個參數0FALSE表示精確匹配
=VLOOKUP($E3,'[test.xlsx]標簽1'!$E:$K,2,0)
VLOOKUP 的一個約束是,它只能查找表數組中最左側列中的值。 如果查找值不在數組的第一列中,則會看到#N/A 錯誤。
下表中,我們要檢索 Kale 的銷售量。
出現 #N/A 錯誤,因為查找值"Kale"出現在 (參數 A2:C10 的第二) 生成table_array列。 在這種情況下,Excel A 列而不是 B 列中查找它。
解決方案:可以通過調整 VLOOKUP,使其引用正確的列來嘗試解決此問題。 如果無法實現,請嘗試移動列。 如果具有較大或復雜的電子表格,其中單元格值是其他計算的結果,或者可能還有其他邏輯原因導致你無法移動列,則這可能也高度不可行。 解決方法是結合使用 INDEX 和 MATCH 函數,這樣可以搜索查找表中任何位置的列中的值。 請參閱下一部分。
請考慮改為使用 INDEX/MATCH
INDEX 和 MATCH 是許多 VLOOKUP 不能滿足需求的情況的不錯選項。 INDEX/MATCH 的主要優點是可以在查找表的任何位置的列中查找值。 INDEX 根據指定表/區域的位置返回值。 MATCH 返回表/范圍中值的相對位置。 通過指定表/數組中值的相對位置,在公式中一起使用 INDEX 和 MATCH 查找表/數組中的值。
使用 INDEX/MATCH 而不是 VLOOKUP 有幾個好處:
-
使用 INDEX 和 MATCH 時,返回值不需要與查找列在同一列中。 這不同於 VLOOKUP,VLOOKUP 中的返回值必須位於指定范圍內。 這種差別有何影響? 使用 VLOOKUP 時,必須知道返回值所在的列號。 盡管這看起來並不困難,但當表很大且必須統計列數時,這可能很麻煩。 此外,如果在表中添加/刪除列,必須重新計數和更新col_index_num參數。 使用 INDEX 和 MATCH 時,查閱列和包含返回值的列不同,因此無需計算。
-
使用 INDEX 和 MATCH,可以指定數組中的行或列,或同時指定兩者。 這意味着可以同時在水平方向和垂直方向上查找值。
-
可以使用 INDEX 和 MATCH 查找任何列中的值。 與 VLOOKUP(其中,只能查找表中的第一列中的值)不同,如果查找值位於第一列、最后一列或兩者之間的任意位置,則 INDEX 和 MATCH 將正常工作。
-
INDEX 和 MATCH 可靈活地動態引用包含返回值的列。 這意味着,可以在不中斷 INDEX 和 MATCH 的情況下向表中添加列。 另一方面,如果需要向表中添加列,VLOOKUP 會中斷,因為它對表進行靜態引用。
-
INDEX 和 MATCH 為匹配提供了更大的靈活性。 INDEX 和 MATCH 可以找到完全匹配項,或大於或小於查找值的值。 使用 VLOOKUP 只能查找與某值最接近(默認情況下)或完全匹配的值。 VLOOKUP 還默認假定表格數組中的第一列按字母順序排序,如果表格不是按這種方式設置的,VLOOKUP 將返回表中第一個最接近的匹配項,而這可能並不是你要查找的數據。
語法
若要生成 INDEX/MATCH 的語法,需要從 INDEX 函數使用 array/reference 參數,並嵌套 MATCH 語法。 其格式為:
=INDEX(數組或引用, MATCH(lookup_value,lookup_array,[match_type])
讓我們使用 INDEX/MATCH 替換上述示例中的 VLOOKUP。 語法如下所示:
=INDEX(C2:C10,MATCH(B13,B2:B10,0))
用簡單的漢語表達其意思:
=INDEX (返回 C2:C10 中的值,該值將匹配 (Kale,該值位於 B2:B10 數組中的某一位置,其中返回值是對應於 Kale 函數的第一個值) )
該公式在 C2 至 C10 單元格中查找 Kale( B7 單元格)對應的第一個值,並返回 C7 單元格中的值 (100),即與 Kale 匹配的第一個值。
問題:找不到完全匹配項
當 range_lookup參數為 FALSE 且 VLOOKUP 無法在數據中查找完全匹配項時,它將返回#N/A 錯誤。
解決方案:如果確定電子表格中存在相關的數據,並且 VLOOKUP 未捕獲,請花些時間驗證引用的單元格是否沒有隱藏空格或非打印字符。 此外,請確保單元格遵循正確的數據類型。 例如,具有數字的單元格的格式應為"數字",而不是"文本"。
此外,請考慮使用 CLEAN 或 TRIM 函數清理單元格中的數據。
問題:查閱值小於數組中的最小值
如果 range_lookup參數設置為 TRUE,並且查找值小於數組中的最小值,則會看到 #N/A 錯誤。 TRUE 會查找數組中的相近匹配項,並返回小於查閱值的最接近值。
在以下示例中,查閱值是 100,但 B2:C10 區域中不存在小於 100 的值,因此出現錯誤。
解決方案:
-
根據需要更改查閱值。
-
如果無法更改查找值,並且需要更大的匹配值靈活性,請考慮使用 INDEX/MATCH 而不是 VLOOKUP-請參閱本文中的上述部分。 使用 INDEX/MATCH 可以查找大於、小於或等於查閱值的值。 有關放棄 VLOOKUP,改為使用 INDEX/MATCH 的詳細信息,請參閱本文上一部分。
問題:查閱列未按升序排列
如果 range_lookup 參數設置為 TRUE,並且其中一個查找列未按 (A-Z) 升序排序,則會看到 #N/A 錯誤。
解決方案:
-
將 VLOOKUP 函數更改為查找完全匹配項。 為此,可將 range_lookup 參數設置為 FALSE。 FALSE 不需要排序。
-
使用 INDEX/MATCH 函數查找未排序表格中的值。
問題:值是較長的浮點數
如果單元格中具有時間值或較長的小數,由於浮點精度,Excel 將返回 #N/A 錯誤。 浮點數是小數點后的數字。 (Excel時間值存儲為浮點數.) Excel包含非常大的浮點的數字,因此,若要使函數正常工作,浮點數需要四舍五入到 5 個小數位數。
解決方案:縮短該數字,使用 ROUND 函數將其四舍五入到五個小數位數。
需要更多幫助嗎?
你始終可以在 Excel 技術社區中咨詢專家或在 Answers 社區獲取。