2017-09-05 224 views
1

我明白帶通配符的vlookup的基本用法,但最近我遇到了一個問題。通配符無法正常工作(部分字符串匹配)的Vlookup上長值

我需要查找一個單元格中包含的值作爲字符串的一部分。在下面的示例中,我將查找colC中的colA,然後將col D中的值返回col B

我使用=VLOOKUP("*"&A1&"*",C$1:D$2,2,0),它只適用於B1

爲什麼B2 & B3工作不一樣?任何解決方案

樣品:

Sample

+0

我發現如果在單元格C2中刪除C335之後的數字,那麼該功能將起作用。我真的不知道爲什麼。 – Luke

+0

據我所知,沒有記錄,但'lookup_value'和'lookup_array'中的單個單元格值都不能超過255個字符。這與'* LOOKUP'和'MATCH'有關。 –

+0

除了公式不適用於長字符串,即使是較短的字符串,公式也會返回部分匹配的結果。在你的例子中,如果'A1:= R7',那麼這也將返回'a' –

回答

0

根據你的調查和評論的阿克塞爾,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中值的末尾。

+1

請注意,使用您的公式以及OP發佈的數據,「A」列中的「C1」條目將返回結果「D」。 –

+0

謝謝你幫助邁克爾,你的解釋也很清楚。我嘗試過你的配方後,它運行良好。但是,由於Ron的第一條評論引起了我的注意,我發現該公式返回部分匹配,例如,如果我更改A1:= R7,它仍返回a。有沒有一種方法可以完全匹配? – Luke

+0

嗨盧克,我已經更新了公式,還需要在A列中的值後面找到逗號。請注意,沒有必要更改C列中的數據以逗號結束,因爲這也在公式中處理。唯一的要求是C列中的每個值都以逗號結尾(除了每個單元格中的最後一個值)。在逗號後面是否有空格並不重要,但逗號之前不得有空格。 – Michael