2016-03-23 229 views
3

我需要计算在Excel单元格中出现给定数字的次数。Excel 2013:计算单元格中出现的数字/字符串

条件如下:

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

  • 该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”等,十分之十的任何数字。

我的做法是做文本搜索而不是数字,失败了。

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

回答

2

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

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

感谢Jeeped。 这很好。 我将重新修改此行以搜索2个不同数字的出现。 – user6027952

0

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

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

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

此计数2的的数量和范围内F5 3分的:I5

更多关于这一点,请参见:

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

+0

感谢您的意见。没想到CountIf,值得一试。 – user6027952

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 
+0

感谢Danielle,但VBA现在不在我的联盟中。 – user6027952

相关问题