為什麼Excel表格會破壞VLOOKUP公式

為什麼Excel表格會破壞VLOOKUP公式

我有一個工作表,使用Excel 未將其識別為表格的原始資料(即,簡單地將值放入相鄰單元格中),並且在工作表的另一部分上,公式在該資料中進行查找,例如

VLOOKUP(D$1, Config!$C$4:$E$8,2,FALSE)

一切進展順利,直到我決定將原始資料聲明為表格(Ctrl-T)以獲得一些額外的功能,例如自動格式化和自動表格擴充。

聲明表後,我的所有公式都會在該表中找到 #N/A,無論我將搜尋區域引用為單元格引用 ( Config!$C$4:$E$8) 還是透過其新表名稱(透過名稱管理器修改)。

線索(我不知道它的價值是什麼)是查找鍵(D$1在我的公式中)和資料鍵(最左邊的列Config!$C$4:$E$8)是數字(像這樣的值2015)。 Excel 似乎在表內使用文字查找,並且無法2015(在表中)與"2015"(來自D$1)匹配。這只是一個線索,我可能是錯的。

我可以做什麼來開始使用表格(自動擴展非常有用)而不破壞我的公式?

編輯 :當查找鍵 ( D$1) 開始成為表的一部分時,事情就會崩潰:2015 現在在公式中被視為“2015”

答案1

正如 sicarius92 在他的評論中指出的那樣,透過「強制轉換」來處理更改的資料類型對D$1 + 0我來說很有效。

儘管如此,這只是一種解決方法,並不能解釋為什麼將資料放入表中會神奇地改變資料類型。

答案2

在 Excel 2010 中(不確定它在 2007 年是如何運作的),將範圍轉換為表格會將標題內容轉換為文本,與內容無關。如果您確實想在標題中包含數字,則必須將儲存格格式標記為「數字」或「常規」(或您需要的任何內容)並重新插入先前的數據,因為顯然Excel 還禁用了對不相容數據類型的檢查(以及自動解決方案、綠色小箭頭及其選單)。

答案3

諸位仁慈的法律...

一個簡單的方法IFERROR()就解決了這個問題。鑑於您知道查找值在查找表中可能是數字,但在查找值儲存格中不是數字,只需執行以下操作:

=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE),  VLOOKUP(VALUE(D$1),Config!$C$4:$E$8,2,FALSE))

上面只是對公式進行概括。如果您不介意將其複製到其他地方,那麼您知道查找值是一個被視為文字的數字,並且您只需要公式的「失敗」一半。如果您不確定,或者根本不知道,但想證明它可以解決此類問題,請使用整個東西。

反之亦然。假設您有一個數字查找值(例如,Excel 認為它是數字{這裡,Excel 認為查找值是文字})。只需使用TEXT()而不是VALUE()解決它:

=IFERROR(VLOOKUP(D$1,Config!$C$4:$E$8,2,FALSE),  VLOOKUP(TEXT(D$1,"@"),Config!$C$4:$E$8,2,FALSE))

(如果兩者都無法解決問題,那麼您將面臨在一個地方或另一個地方尋找垃圾字元的噩夢......由於標頭通常不是來自安全、受控世界之外的數據,因此首先嘗試尋找範圍材料。

相關內容