在
match()
和 CountIf()
中,我将波浪号加倍以允许搜索正常工作。但我遇到过两种情况,这对CountIf()
不起作用。
在下表中,E 列和 F 列显示,替换双波浪号可以让
match()
正确找到列表中的字符串。但 G 至 J 列显示,CountIf()
中的相同替换适用于第 4 行和第 5 行,但不适用于第 6 行和第 7 行。相反,在第 6 行和第 7 行,CountIf()
无需替换即可工作,并且不适用于替换。
B | C | D | E | F | G | H | 我 | J | |
---|---|---|---|---|---|---|---|---|---|
字符串 | 公式 | 结果 | 公式 | 结果 | 公式 | 结果 | 公式 | 结果 | |
4 | {FK*BD6Qc)9j~aHa | =匹配($B4, $B:$B, 0) | #不适用! | =匹配(替换($B4,“~”,“~~”),$B:$B,0) | 4 | =COUNTIFS($B:$B, $B4) | 0 | =COUNTIFS($B:$B, SUBSTITUTE($B4, "~", "~~")) | 1 |
5 | ;.D~n[sg9#?$}z3` | =匹配($B5, $B:$B, 0) | #不适用! | =匹配(替换($B5,“~”,“~~”),$B:$B,0) | 5 | =COUNTIFS($B:$B, $B5) | 0 | =COUNTIFS($B:$B, SUBSTITUTE($B5, "~", "~~")) | 1 |
6 | JFxa7V9."Ap~/Q2g | =匹配($B6, $B:$B, 0) | #不适用! | =匹配(替换($B6,“~”,“~~”),$B:$B,0) | 6 | =COUNTIFS($B:$B, $B6) | 1 | =COUNTIFS($B:$B, SUBSTITUTE($B6, "~", "~~")) | 0 |
7 | dP4%5>作者:{Bw#Vt~D | =匹配($B7, $B:$B, 0) | #不适用! | =匹配(替换($B7,“~”,“~~”),$B:$B,0) | 7 | =COUNTIFS($B:$B, $B7) | 1 | =COUNTIFS($B:$B, SUBSTITUTE($B7, "~", "~~")) | 0 |
这是怎么回事?考虑
CountIf()
标准范围内存在波浪号的可能性的正确方法是什么?
搜索的问题是您拥有的数据包含通配符,并且您正在使用的函数(如 COUNTIF 和 MATCH)接受通配符的使用。您可以在此处找到支持通配符的函数列表。
您需要做的是使用不支持通配符的函数,例如SUMPRODUCT,其缺点是仅适用于有限范围而不是完整列。
这是如何使用公式的示例。
=SUMPRODUCT(--($B$4:$B$7=B2))
这里有一个解释:
$B$4:$B$7=B2
这会将范围与列相匹配,并将匹配标记为 TRUE 或 FALSE
--()
这会将匹配项转换为数字。 1 代表 TRUE,0 代表 FALSE
SUMPRODUCT
将获取上一场比赛的整个响应并对值进行求和。
B | C | D | |
---|---|---|---|
字符串 | 公式 | 结果 | |
4 | {FK*BD6Qc)9j~aHa | =SUMPRODUCT(--($B$4:$B$7=B4)) | 1 |
5 | ;.D~n[sg9#?$}z3` | =SUMPRODUCT(--($B$4:$B$7=B5)) | 1 |
6 | JFxa7V9."Ap~/Q2g | =SUMPRODUCT(--($B$4:$B$7=B6)) | 1 |
7 | dP4%5>作者:{Bw#Vt~D | =SUMPRODUCT(--($B$4:$B$7=B7)) | 1 |
这样您就不需要替换字符串中的波浪号,并且仍然可以获得匹配项。