Excel公式 – 如果包含文本,结果文本

我有一个奇怪的Excel问题,给我一个思维模块。 基本上,这是我得到的:

列A包含文本string,所有文本都包含公司名称和一堆其他信息。 我想删除这些名字。 我有我正在寻找的名字的清单。

**Contractor** CompanyA CompanyB CompanyC CompanyD 

和这样的string:

 CompanyA REQ# G-FMR-036 PT 2 CompanyA Pad AN Structural Steel () COMPANYC REQ# 54 CompanyA REQ# G-FMR-049 

我想要的是返回公司名称出现在该string中的公式。 我的第一个想法是IF和SEARCH的巨大嵌套公式,但我知道必须有更好的方法。

通过在A1:A4中search的列表和在B1:B4中的公司名称列表,使用Ctrl Shift Enter input的 数组公式 ,

 =INDEX($B$1:$B$4,MATCH(TRUE,ISNUMBER(SEARCH($B$1:$B$4,A1)),0)) 

有点混乱,但比嵌套IFs更好:

我正在为你上面给出的例子(4家公司)进行解释。 你应该能够弄清楚如何扩展它。

在A列中有你的string,包括公司名称和额外的东西。 我们假设A1有一些列标题,你的4个string在A2,A3,A4,A5。

在细胞C1,D1,E1,F1有“干净”的四个公司名称。

在C2有这个公式:

 =IF(ISERROR(FIND(UPPER(C$1), UPPER($A2))),"",C$1) 

然后复制单元格C2到C2中的所有单元格:F5。 公式将自动更新以适应每个单元格。

那么,在H2中有这个公式:

 =C2&D2&E2&F2 

然后复制/粘贴到H3,H4,H5。

在H列你会得到你正在寻找的东西。

当然,这假设您在A列中的每个单元格中只有一个匹配的公司名称,并且名称与单元格C1:F1中的公司名称完全相同(达到区分大小写)。

我认为一些公司名称包含空格,否则你可以使用:

 =left(a1,find(" ",a1)-1) 

如果您需要将string的内容与公司列表进行比较,则使用名称范围“CompanyList”中的列表; 每行一个条目; 你可以尝试这样的:

 =IFERROR(LOOKUP(2,1/ISNUMBER(SEARCH(CompanyList&"*",A1)),CompanyList),"Not in List") 

但是,如果某些名称相似,则需要注意列表中的顺序,因为公式将返回匹配的最后一个条目。 所以你想把最长的string放在公司名单上。

这是我迄今为止所创build的,尽pipe我想像一下比嵌套的公式(比如whoa)更好。 我的意思是,它的作品,但它使我想哭。

 =IF(ISNUMBER(SEARCH(T$3,B3)),"CompanyA",IF(ISNUMBER(SEARCH(T$4,B3)),"CompanyB",IF(ISNUMBER(SEARCH(T$5,B3)),"CompanyC",IF(ISNUMBER(SEARCH(T$6,B3)),"CompanyD","Other"))))