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

Excel find, match and mark wildcards

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

A

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

B

abc, cde

我正在尝试使用 B 列中的值并在 A 列中搜索和匹配,并且 match/no 的 return 值在 [=19] 列中匹配=].

我尝试使用 MATCH(B1,A:A) 函数和 return 匹配或不匹配的值,但它全部 return 不匹配并且它不搜索列 A 上的值有 |

我可以使用任何公式吗?

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

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

SEARCH 函数获取单元格 A1 中的值,并且 尝试 在单元格 B1 中包含的字符串值中找到它。我说“trie”是因为它可能 return 如果它什么也没找到就出错。

因此 ISERR(SEARCH(...)) 检查错误,如果有错误 returns TRUE,在这种情况下,这意味着单元格 B1 中的值不存在匹配单元格 A1.

中的那个

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

取反

示例 1

Checking whether each string value in column B is CONTAINED in cell A1's string value

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

returns TRUE 在单元格 C1 中,FALSE 在单元格 C2 中,TRUE 在单元格 C10 中.

post scriptum : 看看 bioschaf 的评论可能有助于你概括这个概念。


示例 2

Checking whether the string value of each cell of column B is CONTAINED in the string value in column A's adjacent cell

或者使用你的例子。

    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

Checking whether each column A's value is CONTAINED somewhere in column B's range $B:$B, using array formula

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

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


示例 4

Checking whether each column B's value CONTAINS at least one of the string value in column D's range $D:$D, using array formula

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

       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:$D,$B2))))))
4   =NOT(NOT(SUM(--NOT(ISERR(SEARCH($D:$D,$B3))))))
3   =NOT(NOT(SUM(--NOT(ISERR(SEARCH($D:$D,$B4))))))
5

其中每个上述公式都必须通过按 CTRL+SHIFT+ENTER 验证为 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 包含单词 mobile,实际上位于 D3