excelsearch表中的string,如果为true,则返回string

A列包含不同的文本 – 大约1000个条目,但相同的文本将出现在不同的单元格中。

在第二个单独的列(G列)=一个单独的表格中,每个单元格包含多个设置文本string之一(每个字符长度可以是2到5个字符)。 总共有20个左右。

我想search列G中每个文本string的每个单元格的开始,如果存在(比如说G3的内容),我希望G3的内容显示在列B中匹配的单元格一个。

这个问题很复杂,包含ASC和SC的匹配文本以及进一步的单个charcater匹配*(尽pipe如果这给出了更简单的结果,我可以排除*)。

例子

列A包含
ASC1 HHHH ………
ASC2 IIII …….
ASC2 AAAA ………
SC2 JJJJ ….
试用洞……..
TRIALHOLE ……
OP1 MMMM …
ASC1COMPLEX
KAN1
PS BAN
* TTC Jiokl jj

G栏
ASC1
ASC2
*
OP1
PS
SC2
试用
校验

所以B列应该显示
ASC1
ASC2
ASC2
SC2
试用
试用
OP1
ASC1
0(或其他一些错误/遗漏值)
PS
*

(如何才能做到这一点? 我试图从互联网上适应各种解决scheme,失败了。

非常感谢DaveT

假设G2:G20包含searchstring – 如果您可以按照长度的顺序(最短的第一个)列出它们,所以给定您的样本值,列表将以

* PS OP1 SC2 ASC1 ASC2 TRIAL VERIFY

然后用这个公式在B2中复制下来

=LOOKUP(2^15,FIND(G$2:G$20,A2),G$2:G$20)

G2:G20应完全填充G2:G20或调整使用的范围 – 匹配区分大小写,如果不匹配则返回#N / A

如果您想在G2:G20中使用空白,请使用此版本

=LOOKUP(2^15,FIND(G$2:G$20,A2)/(G$2:G$20<>""),G$2:G$20)

如果您在列G中的每个string的末尾放置了一个星号,则这是有效的。星号是一个通配符,它​​允许MATCH()函数根据string加上任意数量的字符进行search。

将其粘贴到单元格B1中。

 =IF(ISNA(MATCH($G$1,A1,FALSE)),"",LEFT($G$1,SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$2,A1,FALSE)),"",LEFT($G$2,SEARCH("*",$G$2,1)))&IF(ISNA(MATCH($G$3,A1,FALSE)),"",LEFT($G$3,SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$4,A1,FALSE)),"",LEFT($G$4, SEARCH("*",$G$1,1)))&IF(ISNA(MATCH($G$5,A1,FALSE)),"",LEFT($G$5, SEARCH("*", $G$5,1))) 

您必须重复“&IF(ISNA(MATCH($ G $ 5,A1,FALSE)),”,LEFT($ G $ 5,SEARCH(“*”,$ G $ 5,1)))列G中的每个单元格都有一个要search的string。

然后双击单元格右下angular的十字线,将B1中的公式全部复制下来。

如果不匹配,这将不会在单元中放置任何东西。 这也不区分大小写,但我会第一个承认,如果你的数据出现在所有上限,那么去上面的答案。 这很简单。