我明白帶通配符的vlookup
的基本用法,但最近我遇到了一個問題。通配符無法正常工作(部分字符串匹配)的Vlookup上長值
我需要查找一個單元格中包含的值作爲字符串的一部分。在下面的示例中,我將查找colC中的colA,然後將col D
中的值返回col B
。
我使用=VLOOKUP("*"&A1&"*",C$1:D$2,2,0)
,它只適用於B1
。
爲什麼B2
& B3
工作不一樣?任何解決方案
樣品:
我明白帶通配符的vlookup
的基本用法,但最近我遇到了一個問題。通配符無法正常工作(部分字符串匹配)的Vlookup上長值
我需要查找一個單元格中包含的值作爲字符串的一部分。在下面的示例中,我將查找colC中的colA,然後將col D
中的值返回col B
。
我使用=VLOOKUP("*"&A1&"*",C$1:D$2,2,0)
,它只適用於B1
。
爲什麼B2
& B3
工作不一樣?任何解決方案
樣品:
根據你的調查和評論的阿克塞爾,VLOOKUP不超過255個字符值工作。解決方法是使用具有處理更長值的SEARCH功能的數組公式。雙擊單元格B1並粘貼此公式,然後按CTRL
+ SHIFT
+ ENTER
,而不是隻按自身回車保存:
=INDEX($D$1:$D$2,MATCH(TRUE,ISNUMBER(SEARCH(A1&",",$C$1:$C$2&",")),0))
如果你輸入正確,選擇上就會顯示{花括號}在公式周圍,它應該評估到你想要的結果。
該公式首先創建一個數組,搜索C1中每個單元格中A1的位置:C2。該數組將包含數字(找到A1時)和錯誤(未找到A1時)。
ISNUMBER然後創建TRUE的陣列(當A1是發現)和FALSE(當未發現A1)
MATCH然後查找陣列中的第一個TRUE值。
INDEX然後從D1:D2返回相應的值。
編輯:該公式現在搜索A1後面跟着逗號的值。這確保了完全匹配。爲了確保公式可以匹配列C中任何單元格的最後一個值,逗號也會添加到列C中值的末尾。
請注意,使用您的公式以及OP發佈的數據,「A」列中的「C1」條目將返回結果「D」。 –
謝謝你幫助邁克爾,你的解釋也很清楚。我嘗試過你的配方後,它運行良好。但是,由於Ron的第一條評論引起了我的注意,我發現該公式返回部分匹配,例如,如果我更改A1:= R7,它仍返回a。有沒有一種方法可以完全匹配? – Luke
嗨盧克,我已經更新了公式,還需要在A列中的值後面找到逗號。請注意,沒有必要更改C列中的數據以逗號結束,因爲這也在公式中處理。唯一的要求是C列中的每個值都以逗號結尾(除了每個單元格中的最後一個值)。在逗號後面是否有空格並不重要,但逗號之前不得有空格。 – Michael
我發現如果在單元格C2中刪除C335之後的數字,那麼該功能將起作用。我真的不知道爲什麼。 – Luke
據我所知,沒有記錄,但'lookup_value'和'lookup_array'中的單個單元格值都不能超過255個字符。這與'* LOOKUP'和'MATCH'有關。 –
除了公式不適用於長字符串,即使是較短的字符串,公式也會返回部分匹配的結果。在你的例子中,如果'A1:= R7',那麼這也將返回'a' –