【问题标题】:Excel 2013: Count the occurrence of numbers/strings in a cellExcel 2013:计算单元格中数字/字符串的出现次数
【发布时间】:2016-03-23 02:06:37
【问题描述】:

我需要计算任何给定数字在 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”等,任何十分之一的数字。

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

是否也有其他解决方案(文本 -> 列??)。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

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

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

    【讨论】:

    • 谢谢吉普德。这很好用。我将重新修改这一行以搜索 2 个不同数字的出现。
    【解决方案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 暂时不适合我。
    【解决方案3】:

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

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

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

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

    有关更多信息,请参阅:

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

    【讨论】:

    • 感谢您的建议。还没想过CountIf,值得一试。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-04-24
    相关资源
    最近更新 更多