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

3
我需要计算在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(错误)

主要问题:

这个公式似乎只搜索“1”,因此“11”经常被误认为是“1”,因此也会被计入总数。

同样适用于“5”、“15”等任何十分位上的数字。

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

如果有其他解决方案(文本 -> 列?),将不胜感激。

3个回答

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

谢谢Danielle,但是VBA现在超出了我的能力范围。 - user6027952

2

您需要在前后加入分隔符。这意味着您还必须将它们作为前缀和后缀添加到原始字符串中。

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

谢谢Jeeped。 这个很好用。 我会重新修改这一行代码,以搜索2个不同数字的出现。 - user6027952

0

我会使用文本分列功能,以将每个数字放在自己的单元格中。注意:您可能需要插入空白列来先保存数字,以便不覆盖任何数据!

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

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

这将计算范围F5:I5内2和3的数量。

有关更多信息,请参见:

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


谢谢建议。我还没有想到使用CountIf,值得一试。 - user6027952

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接