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



我正在尝试根据第B列中的值进行搜索,并在第A列中查找字符串,例如:

A

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

B

abc, cde

我正在尝试使用第B列中的值,并在第A列中搜索和匹配,并在第C列中返回匹配/不匹配的值。

我尝试使用MATCH(B1,A:A)函数并返回匹配或不匹配的值,但它都返回不匹配,并且它没有搜索列A上具有 |

我可以使用任何公式?

如果你想要的是获取一个布尔值,TRUEFALSE,它会告诉你单元格B1中的字符串是否在单元格A1的字符串值中的某个地方,你可以这样做

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

SEARCH函数获取单元格A1中的值,并尝试在单元格B1中包含的字符串值中找到它。我说"trie",因为如果什么也没找到,它可能会返回错误。

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

最后,为了将函数ISERR的输出转换为你想要的布尔答案,我们通过执行NOT(ISERR(...))来否定它。


例 1

检查第B列中的每个字符串值是否在单元格A1的字符串值中包含ED

A                          B             C
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中的TRUEFALSE单元格C2中的TRUE和单元格C10中的。

后记:选择Bioschaf的评论可能会帮助您概括这个概念。


例 2

检查列B的每个单元格的字符串值是否包含EDA的相邻单元格中的字符串值

或者使用您的示例。

A               B             C
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的值是否包含EDB的范围$B$1:$B$11中的某个位置

A         B              C
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的值是否包含SD的范围$D$2:$D$5中的至少一个字符串值

使用您在评论中提供的数据。并在您在评论中提到的列中显示它们,因此我们有

B                                                       C           D
1      
2      hardware|information services|information technology                hardware
3      hardware                                                            mobile
4      apps|mobile                                                         3d
5                                                                          computer

因此,如果我们想检查第B列中的每个值是否包含一个写在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 作为矩阵公式进行验证。这样做将呈现:

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包含单词mobile,实际上位于D3

最新更新