2014-11-15 46 views
1

我有一个奇怪的Excel问题给我一个思维障碍。基本上,这是我得到的:Excel公式 - 如果包含文本,结果文本

列A包含文本字符串,它们都包含公司名称和一堆其他信息。我想删除这些名字。我有我正在搜索的名称的列表。

**Contractor** 
CompanyA 
CompanyB 
CompanyC 
CompanyD 

和字符串这样的:

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

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

+0

你坚持使用Excel? –

+0

是的,否则这会比较容易一些。我宁愿在没有VBA的情况下这样做,但这将是我下一步的行动。 – idalsin

+0

你的历史对python有一些兴趣,我们可以使用它吗? –

回答

2

随着列表A1搜索:A4和B1公司名称的列表:B4,这array formula,与按CtrlShift键进入输入将做到这一点:

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

这是我迄今为止创建的,尽管我想像一下比嵌套的公式如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")))) 
1

一个杂牌但比嵌套国际单项体育联合会的位:

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

在A列中有你的字符串,其中包括公司名称和多余的东西。我们假设A1有一些列标题,并且你的4个字符串在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。

1

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

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

如果您需要比较cont将该字符串与公司列表进行比较,然后将该列表与名称范围“CompanyList”中的列表进行比较;每行一个入口;你可以尝试这样的:

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

然而,如果一些名字很相似,你需要注意的顺序在列表中,因为该公式将返回最后一个匹配的条目。所以你想把最长的字符串放在公司名单上。