![](/img/trans.png)
[英]VLOOKUP returns #N/A although match exists (=A1=B1 == “TRUE”)
[英]Vlookup returns N/A despite of existing match
我有兩個表, table1
和table2
。 我執行VLOOKUP
函數以將table2
中的 3 列填充到table1
。
出於某種原因,該公式不適用於第一行,並且即使存在table2
,也無法從table2
找到完全匹配的內容。
我確保兩列(用於比較)具有相同的格式( General
)並且沒有額外的間距。 同樣的條件也適用於其余的記錄,並且在那里正常工作。
table1 - 您可以看到第一行缺少的匹配項。
table2 - 你可以看到匹配確實存在,但它沒有反映在table1
。
VLOOKUP
找不到特定記錄的匹配項還有其他原因嗎?
嘗試直接評估您認為相等的兩個單元格的相等性,例如,如果 A2 是您要查找的值,而 Sheet2!A100 是您認為應該匹配的值,請在單元格中嘗試以下操作:
=(A2=Sheet2!A100)
如果返回 false,則您知道 vlookup 中存在一些格式問題或錯誤。
還可以嘗試“公式”/“評估公式”功能區命令來逐步執行您的查找,以防突出顯示錯誤。
好的 - 這是一個非常棒的用例。 對於“顯然”相等的值, VLOOKUP
和INDEX-MATCH
返回#N/A 。 用=TRIM(CLEAN(SUBSTITUTE(A1,CHAR(160)," ")))
清理了我的數據,但沒有用。
然后,我比較了兩個看起來具有匹配值的單元格,並且它們的評估結果為 FALSE ( A1=B1
導致FALSE )。
然后,作為最后的手段,我用代碼檢查了兩個單元格中每個字符的每個 ASCII 值,我發現一個單元格中的“-”與另一個單元格中的“-”不同。 第一個單元格的 ASCII 值是 63,第二個單元格的 ASCII 值是 45,因為看起來是相同的“-”。 結果證明 63 是“短划線”,而 45 是標准的破折號或減號。
評估字符串中每個字符的 ASCII 代碼的方法是在使用 LEN 函數測試單元格的長度后,將 CODE 函數與 MID 或 RIGHT 函數結合起來。
例子:
LEN(A1)
應等於LEN(B1)
對於每個單元格中的第一個字符:
CODE(A1)
代碼默認為左邊第一個字符
CODE(MID(A1,2,1)
產生第二個字符的 ASCII
CODE(MID(A1,3,1)
產生第二個字符的 ASCII
等等
如果您有很多字符,您可以在 CODE-MID 函數旁邊發布一個整數序列,並將位置參數指向相關整數,然后向下或交叉復制
要么
您可以查找奇怪的非數字字符,然后為兩個單元格測試該字符。
已經觀察到這樣的情況,其中直接比較失敗(例如公式=A1=B1
導致FALSE
)但長度=LEN(A1)=LEN(B1)
和逐個字母的 ASCI 比較( =CODE(A1,1,1)
, =CODE(A1,2,1)
, =CODE(A1,3,1)
等) 顯示沒有區別。
有效的是調整 VLOOKUP 中查找值的格式。
例如=VLOOKUP(A1, ARRAY, COL_NUM, FALSE)
-> =VLOOKUP(TEXT(A1, "000"), ARRAY, COL_NUM, FALSE)
我最近遇到了同樣的問題,並通過將 vlookup 公式更改為 =VLOOKUP([value to lookup], [lookup table], [column to return in the lookup table], False ) 解決了這個問題。 將最后一個輸入參數設置為“false”會強制 Excel vlookup 函數執行精確匹配。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.