繁体   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