Excel 2013 - 统计单元格中字符串的出现次数

Excel 2013 - count occurrences of strings in cell

我正在尝试创建一个单元格公式,计算一个或多个字符串在单元格中出现的次数。

如果我的单元格 A1 包含 3.1.1-4 然后我希望我的公式为 return 3(. 或 - 出现在单元格字符串中的次数。

到目前为止我有一个公式:

=COUNTIF(A1:A1,"*-*")+COUNTIF(A1:A1,"*.*")

但这只有 returns 2(我猜 1 因为“.”出现 + 1 因为“-”出现)

如何获得计算任一字符串出现次数而不是字符串出现次数的公式?

这是一个 VBA 解决方案。它需要两个字符串并计算第二个传递的字符串是第一个字符串的子字符串的次数。它在这样做时使用了朴素的线性搜索。默认情况下,它不区分大小写。将可选 IgnoreCase 参数设置为 False 以进行区分大小写的搜索。

Function CountIn(ByVal s As String, ByVal t As String, Optional IgnoreCase As Boolean = True) As Long
    Dim i As Long, count As Long, n As Long, k As Long
    n = Len(s)
    k = Len(t)

    If IgnoreCase Then
        s = UCase(s)
        t = UCase(t)
    End If

    For i = 1 To n - k + 1
        If Mid(s, i, k) = t Then count = count + 1
    Next i

    CountIn = count
End Function

那么对于你的例子,

=COUNTIN(A1,"-")+COUNTIN(A1,".")

计算结果为 3

使用这个公式:

=(LEN(E1)-LEN(SUBSTITUTE(E1,".","")))/LEN(".")+(LEN(E1)-LEN(SUBSTITUTE(E1,"-","")))/LEN("-")