我正在尝试编写一个简单的公式来计算特定名称在列中出现的次数。我正在使用COUNTIF
,因为这是一个非常直接的过程,但我无法弄清楚如何使某个名称特别成功。情况就是这样:
名为年龄的列将显示包含一个或多个名称的单元格,以逗号分隔,以防有多个值。以“Young”为例很容易告诉COUNTIF
公式给出表示该单词出现次数的数字,或者是单元格中的唯一值,或者是具有较长字符串值的单元格的一部分通过给出公式“ Young ”声明。
当我希望公式计算“成熟”出现在我的专栏中的次数时,问题出现了。只有在说“成熟”而没有采取所有“Early_Mature”或“Semi_Mature”的情况下,我才能想出让它算进的方法
我知道对于熟悉Excel基础知识的人来说这很容易,所以我认为不需要提供更多细节。
谢谢
答案 0 :(得分:1)
大多数时候,我通过在主字符串的开头和结尾添加相同的分隔符(我们的字符串)来成功解决这些问题。
因此,由于您的数据位于COL:Y
,因此您可以创建新的帮助COL:Z
并输入以下公式:
="," & Y1 & ","
我没有在逗号之前或之后使用任何空格,因为您的数据似乎没有任何空格。根据您的情况,您可能需要使用空格。
现在你的字符串用逗号包装,你可以将COUNTIF
公式改为:
=COUNTIF(Z:Z,"*,"&B1&",*")
*
字符是代表"任何东西"在这种情况下。
答案 1 :(得分:0)
要获取Mature
的出现次数(不包括具有前缀的出现次数),您可以使用此数组公式:
=SUM(((LEN(A2:A7)-LEN(SUBSTITUTE(A2:A7,"Mature",""))) / LEN("Mature"))-((LEN(A2:A7)-LEN(SUBSTITUTE(A2:A7,"_Mature",""))) / LEN("_Mature")))
请注意,此公式适用于 Ctrl + Shift + Enter 。
鉴于您的范围位于Y:Y
列,只需将范围更改为您需要的范围。
答案 2 :(得分:0)
使用UDF。代码进入标准模块added by,用 Alt + F11 打开VBE,然后在项目浏览器中右键单击并添加模块。
<强>代码强>
Option Explicit
Public Function GetCount(ByRef selectRange As Range, ByVal searchTerm As String) As Long
Application.Volatile
With selectRange
Dim arr(), joinedString As String, i As Long, outputCount As Long
arr = .Value
joinedString = Join(Application.WorksheetFunction.Transpose(Application.WorksheetFunction.Index(arr, 0, 1)), ",")
Dim arr2() As String
arr2 = Split(joinedString, ",")
For i = LBound(arr2) To UBound(arr2)
If Trim$(arr2(i)) = "Mature" Then
outputCount = outputCount + 1
End If
Next i
End With
GetCount = outputCount
End Function
表单中的用法
答案 3 :(得分:0)
另一种方法是将“成熟”改为“Fully_Mature”。然后你可以使用Countif()。
您必须分步执行此操作:
1)将“Early_Mature”更改为“E_M”
2)将“Semi_Mature”更改为“S_M”
3)将“成熟”改为“完全成熟”
4)步骤1)的逆转。
5)步骤2)的反向。