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
上具有|
任何公式我可以使用?
如果你想得到一个布尔值, 即 TRUE
或FALSE
,它告诉你单元格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
的值是否包含列D
string值的至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