Excel 字符串中的字符串查找
Excel String lookup within String
我有“收货地”列表,我需要在另一列中查找包含城市名称的列表集,以正确的大小写/正确的名称。
我尝试了下面的公式,但我没有找到任何运气
=(VLOOKUP(查找(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)
我遇到了在逗号和 space 之前查找字符串的解决方案,如果第一个单词匹配,它将检查逗号之后的单词 (+3)。结果现在是预期的。
我使用的公式:
=IFERROR(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(",",A2,1)+3))),$I:$I,1),$I:$I),$I:$I,1,0),(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(" ",A2,1)-1))),$I:$I,1),$I:$I),$I:$I,1,0)))
解决方案
假设你有office excel 365,你可以结合xlookup和Find函数来解决,如下
=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D:$D,$D:$D,"Not found",2)
得到的结果如下
说明
首先我们需要提取直到“,”的第二次迭代的字符
LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1)
由于并非所有字符串的名称都带有“,”,例如:BRADFORD GB,上面的公式将向我们使用 IFERROR 函数的计数器抛出错误。因此,如果上面的公式抛出错误,我们将只提取 space.
的第一个实例之前的字符
IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),<em>LEFT(A2, FIND(" ",A2)-1)</em>)
现在我们只需要在城市列表中查找名称。但是,由于收货地和城市列表不完全相同,我们将在顶部的整体公式中使用通配符“*”。
=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D:$D,$D:$D,"Not found",2)
我有“收货地”列表,我需要在另一列中查找包含城市名称的列表集,以正确的大小写/正确的名称。
我尝试了下面的公式,但我没有找到任何运气
=(VLOOKUP(查找(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)
我遇到了在逗号和 space 之前查找字符串的解决方案,如果第一个单词匹配,它将检查逗号之后的单词 (+3)。结果现在是预期的。
我使用的公式:
=IFERROR(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(",",A2,1)+3))),$I:$I,1),$I:$I),$I:$I,1,0),(VLOOKUP(LOOKUP(2^15,SEARCH((LEFT(A2,(FIND(" ",A2,1)-1))),$I:$I,1),$I:$I),$I:$I,1,0)))
解决方案
假设你有office excel 365,你可以结合xlookup和Find函数来解决,如下
=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D:$D,$D:$D,"Not found",2)
得到的结果如下
说明
首先我们需要提取直到“,”的第二次迭代的字符
LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1)
由于并非所有字符串的名称都带有“,”,例如:BRADFORD GB,上面的公式将向我们使用 IFERROR 函数的计数器抛出错误。因此,如果上面的公式抛出错误,我们将只提取 space.
的第一个实例之前的字符IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),<em>LEFT(A2, FIND(" ",A2)-1)</em>)
现在我们只需要在城市列表中查找名称。但是,由于收货地和城市列表不完全相同,我们将在顶部的整体公式中使用通配符“*”。
=XLOOKUP("*"&IFERROR(LEFT(A2,FIND("@",SUBSTITUTE(A2,",","@",2))-1),LEFT(A2,FIND(" ",A2)-1))&"*",$D:$D,$D:$D,"Not found",2)