簡體   English   中英

Excel 字符串內的字符串查找

[英]Excel String lookup within String

在此處輸入圖像描述

我有“收貨地點”列表,我需要查找另一列,其中包含一組列表,其中包含正確大小寫/正確名稱的城市名稱。

我試過下面的公式,但我沒有找到任何運氣

=(VLOOKUP(LOOKUP(2^15,SEARCH($I$1:$I$7,A2),$I$1:$I$7),$I$1:$I$7,1,0))

當單元格中的第一個單詞與另一個單詞匹配時,它會給我結果,但是當“收據地點”在第一個單詞之后有不同的單詞時,它會拋出錯誤,

例如,如上圖所示,“BRADFORD GB”不會從城市列表中獲取“Bradford, WYK”。

您可以使用此公式來捕獲單元格的第一個單詞(如果它只包含一個單詞,則可以捕獲整個單詞):

=IFERROR(LEFT(A2,FIND(" ",A2)-1),A2)

如果您當前的公式失敗,您可以使用它來執行 VLOOKUP:

=IFERROR([your-current-formula],VLOOKUP(IFERROR(LEFT(A2,FIND(" ",A2)-1),A2),1,1)

我遇到了一個在逗號和空格之前查找字符串的解決方案,如果第一個單詞匹配,它將檢查逗號之后的單詞 (+3)。 結果現在是預期的。

我使用的公式:

=IFERROR(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(",",A2,1)+3))),$I$1:$I$8,1),$I$1:$I$8),$I$1:$I$8,1,0),(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(" ",A2,1)-1))),$I$1:$I$8,1),$I$1:$I$8),$I$1:$I$8,1,0))) 

解決方案

在此處輸入圖像描述

假設你有office excel 365,你可以使用 xlookup 和 Find function 的組合來解決如下

=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D$2:$D$7,$D$2:$D$7,"Not found",2)

結果如下

結果

解釋

  1. 首先,我們需要提取字符直到“,”的第二次迭代

    LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1)

  2. 由於並非所有字符串的名稱都帶有“,”例如:BRADFORD GB,因此上述公式將向我們使用 IFERROR function 的計數器拋出錯誤。 因此,如果上面的公式拋出錯誤,我們將只提取字符直到第一個空格實例。

    IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1), LEFT(A2,FIND(" ",A2)-1) )

  3. 現在我們只需要在城市列表中查找名稱。 但是,由於收貨地點和城市列表不完全相同,我們將使用通配符“*”,如頂部的整體公式中所示。

=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D$2:$D$7,$D$2:$D$7,"Not found",2)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM