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
上的值有 |
我可以使用任何公式吗?
如果你想要得到一个布尔值,即 TRUE
或 FALSE
,它告诉你单元格中的字符串是否 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
我正在尝试根据列 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
上的值有 |
我可以使用任何公式吗?
如果你想要得到一个布尔值,即 TRUE
或 FALSE
,它告诉你单元格中的字符串是否 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 cellA1
'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 columnA
'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 columnB
'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 columnD
'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