如何计算字符串 [Excel] 中包含的确切文本

How to count exact text contain in string [Excel]

我已经使用下面的这些公式来计算字符串中包含的确切文本,但公式仍然错误地计算了它。例如,我想在table中统计"ZIKA"个测试代码,答案应该是两个。但公式也将 ZIKA2 算作 ZIKA。如何从计数中忽略 ZIKA2?

测试

我已经尝试过这些公式:

=SUMPRODUCT(--(ISNUMBER(FIND("ZIKA",F:F))))

还有

=COUNTIF(F:F,"ZIKA")

您可以准确计算寨卡病毒和逗号分隔病毒

=COUNTIF(F:F,"ZIKA")+COUNTIF(F:F,"ZIKA,*")+COUNTIF(F:F,"*, ZIKA")+COUNTIF(F:F,"*, ZIKA,*")

试试这个正则表达式,它可能需要一个辅助列。我还没有测试那么多。
按 ALT + F11 打开 VBA 编辑器。
单击插入 -> 模块并复制粘贴下面的代码。

Function Regex(Cell, Search)
    Dim RE As Object

    Set RE = CreateObject("vbscript.regexp")

    RE.Pattern = "(\b" & Search & "\b)"
    RE.Global = True
    RE.IgnoreCase = True
    Set Matches = RE.Execute(Cell)

    For Each res In Matches
        Regex = Regex & "," & res
    Next res
    Regex = Mid(Regex, 2)
End Function

如果它在您 运行 它所在的单元格中发现寨卡病毒,它将 return "ZIKA"。
然后您只需在辅助列中计算 ZIKA。

更新了一个新代码,您可以在其中更改搜索。
=regex(A1, "ZIKA")

一起使用

我假设你的数据遵循这种格式

xxx, yyy, zzz
space after comma

您可能需要将公式分成 3 个部分

=COUNTIF(F:F,"ZIKA,*")+COUNTIF(F:F,"*, ZIKA")+COUNTIF(F:F,"ZIKA")

第一部分将计算以 ZIKA 开头的那些,第二部分将计算以 ZIKA 结尾的那些,最后我们应该只计算那些以 ZIKA 结尾的寨卡病毒