Excel 2013:计算单元格中数字/字符串的出现次数

时间:2016-03-23 02:06:37

标签: excel excel-formula

我需要计算excel单元格中任何给定数字的出现次数。

以下条件:

  • 每个单元格可以有不同的重复数字组合,以逗号分隔。

  • excel公式足以搜索用户所需的任何数字。

  • 最大范围最多20个。

例如,我会输入任何数字,公式应该返回一个出现的总和。

1, 2, 3, 1, 5, 11, 1, 11
=>  5 (input "1" and "11")
=>  3 (input "1" only)
=>  2 (input "11" only)
*****************************************************

我尝试过的事情:

  1. =LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),"1,","")) =>答案是7(错误)

  2. =LEN(A2)-LEN(SUBSTITUTE(UPPER(A2),"1","")) =>答案是8(错误)

  3. 主要困难: 该公式似乎在寻找" 1"因此" 11"经常被误认为" 1"也是如此,因此增加了总和。

    同样适用于" 5"," 15"等等,十分之一的任何数字。

    我的方法是进行文本搜索而不是数字,但失败了。

    感谢是否有替代解决方案(文本 - >列??)。

3 个答案:

答案 0 :(得分:2)

您需要包括正面和背面的分隔符。这意味着您还必须将它们作为前缀和后缀添加到原始字符串中。

=(LEN(", "&A2&", ")-LEN(SUBSTITUTE(UPPER(", "&A2&", "),", 1,", "")))/LEN(", 1,")

答案 1 :(得分:2)

如果VBA可行,请将其添加到VBA代码并使用以下函数(假设您的长字符串位于单元格A2中)

= getOccurence(A2,5)

VBA代码:

Function getOccurence(inputString As String, numberToSearch As Integer) As Integer
        Dim strArray() As String
        strArray = Split(inputString, ",")
        For i = 0 To UBound(strArray)
            If (strArray(i) = numberToSearch) Then
                getOccurence = getOccurence + 1
                End If
                Next

End Function

答案 2 :(得分:0)

我会使用文本到列来获取其自己的单元格中的每个数字。注意:您可能希望插入空白列以保留数字,以便不覆盖任何数据!

在此之后,我将使用COUNTIF函数来计算某个范围内某个数字的出现次数。例如:

= COUNTIF(F5:I5,2)+ COUNTIF(F5:I5,3)

这计算F5:I5

范围内的2和3的数量

有关详情,请参阅:

https://exceljet.net/excel-functions/excel-countif-function