我有我認為是一個奇怪的錯誤。我在 Excel 365 中使用 XLookup 函式。我使用 VBA 腳本為一行資料創建一個 ID 號,然后將該 ID 號放入一個單元格中。一切似乎都很正常。但是,如果我使用 XLookup 函式和 Exact Match 來定位該 ID 號并在它旁邊的列中給我一些值,它無法找到它并且我得到一個 N/A。
但是,如果我手動定位該確切 ID 號并將單元格置于編輯模式,然后退出單元格而不采取任何其他步驟以任何方式更改資料,則 XLookup 函式會突然回傳正確的結果。

如果我將單元格保持在初始狀態,但使用匹配模式“-1”來獲得精確匹配或下一個更小的匹配,它會回傳正確的結果。我不想讓它處于那種模式,因為我的最終函式實際上是兩個嵌套的 Xlookup 函式,它們檢查一個表的 ID,如果沒有,則查看另一個表,所以我不想要第一個函式回傳“下一個較小”的結果。
當我在 VBA 腳本中生成 ID 號時,我將其生成為“Variant”型別,因為 ID 號是一個小數,例如 210.1。然后我簡單地將該單元格的值設定為變體 ID 號。
這是我將資料放入單元格的方式:
Dim myID As Variant
Dim myCell As Variant
Dim myRange As Range
Set myRange = Range(someNamedRange)
myID = GenerateNextID 'This generates a variant in the form of something like 201.1
For Each myCell In myRange
myCell.Value = myID
myID = myID 0.1
Next myCell
Excel 似乎將其識別為數字;至少我似乎能夠對 ID 號進行數學運算并得到正確的結果。
我已經嘗試將查找 ID 號放在引號中,以查看將其作為文本而不是數字進行查找是否會產生不同的結果,但它并沒有改變我的結果。
任何人都知道為什么我會得到這個結果?在不使用不同匹配模式的情況下解決它的方法?
任何幫助表示贊賞。
*編輯添加代碼示例。
uj5u.com熱心網友回復:
你有一個浮點精度錯誤。E11 中的值是 211.39999999999998 而不是 211.4。當您重新輸入單元格的值時,Excel 會更正錯誤。
使用如下一行寫入值:
myID = Round(myID 0.1, 1)
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/326214.html
下一篇:如何對以逗號分隔的數字進行排序
