Excel查找,匹配和标记通配符

我正在尝试基于列B值进行search,并在列B查找string,例如:

A

 abc, cde | abc, 1234 | cde | abc, etc 

B

 abc, cde 

我正在尝试使用列B值,并在列B进行search和匹配,并在列C返回匹配/不匹配的值。

我尝试使用MATCH(B1,A:A)函数并返回匹配值或不匹配,但是它们全部返回不匹配,并且不search列A上具有|

任何公式我可以使用?

如果你想得到一个布尔值, TRUEFALSE ,它告诉你单元格B1中的string是否在单元格A1的string值的某处,你可以做

 =NOT(ISERR(SEARCH(B1,A1))) 

SEARCH函数获取单元格A1的值并尝试在单元格B1包含的string值中find它。 我说“trie”,因为如果它找不到任何东西,它可能会返回一个错误。

因此, ISERR(SEARCH(...))检查错误,如果有错误则返回TRUE ,在这种情况下,这意味着单元格B1中的线索与单元格B1中的线索不匹配。

最后,要把函数ISERR的输出转换成你想要的布尔型的答案,我们通过NOT(ISERR(...))否定它。


例1

检查B列中的每个string值是否在单元格A1的string值中包含EDTAIN ED

  ABC 1 abc, cde | abc, 1234 abc, cde =NOT(ISERR(SEARCH($B1,$A$1))) 2 zyy | xww =NOT(ISERR(SEARCH($B2,$A$1))) . ... ... 10 abc, 1234 =NOT(ISERR(SEARCH($B10,$A$1))) 

在单元格C1返回TRUE ,在单元格C2返回FALSE在单元格C10返回TRUE

post scriptum :选一下bioschaf的评论可能会帮助你概括这个概念。


例2

检查列B的每个单元格的string值是否在列A的相邻单元格中的string值中包含“包含ED

或者使用你的例子。

  ABC 1 abc | cde abc =NOT(ISERR(SEARCH($B1,$A1))) 2 cde | bsd xxx =NOT(ISERR(SEARCH($B2,$A2))) 3 aaa | abc bsd =NOT(ISERR(SEARCH($B3,$A3))) 

例3

检查每一列A的值是否在列B的范围$B$1:$B$11某处 ,使用数组公式

  ABC 1 abc abc | cde =NOT(NOT(SUM(--NOT(ISERR(SEARCH($A1,$B$1:$B$11)))))) . ... ... ... 1000 aaa =NOT(NOT(SUM(--NOT(ISERR(SEARCH($A1000,$B$1:$B$11)))))) 

从中可以删除NOT(NOT(...))部分,以查看发生次数,而不是将其转换为布尔值。


例4

检查列B的值是否包含列Dstring值的至less一个范围$D$2:$D$5 ,使用数组公式

使用您在评论中提供的数据。 并在你也提到的评论栏中显示他们,我们得到了

  BCD 1 2 hardware|information services|information technology hardware 3 hardware mobile 4 apps|mobile 3d 5 computer 

因此,如果我们想要检查B列中的每个值是否包含一个写在D2:D5范围内的词D2:D5 ,我们可以做的是(例如在E列中):

  E 1 2 =NOT(NOT(SUM(--NOT(ISERR(SEARCH($D$2:$D$5,$B2)))))) 4 =NOT(NOT(SUM(--NOT(ISERR(SEARCH($D$2:$D$5,$B3)))))) 3 =NOT(NOT(SUM(--NOT(ISERR(SEARCH($D$2:$D$5,$B4)))))) 5 

上述每个公式必须通过按CTRL + SHIFT + ENTER来validation为MATRIX-FORMULA 。 这样做会渲染:

  E 1 2 TRUE 4 TRUE 3 TRUE 5 

E2我们有TRUE因为hardware|information services|information technology包含字hardware ,实际上位于D2

E3我们得到TRUE因为hardware包含(正好) hardware ,实际上位于D2

E4我们有TRUE因为apps|mobile包含apps|mobile这个词,实际上它位于D3