带有字符串的Excel COUNTIF,以逗号分隔

时间:2018-05-31 08:47:35

标签: excel excel-formula formula countif

我正在尝试编写一个简单的公式来计算特定名称在列中出现的次数。我正在使用COUNTIF,因为这是一个非常直接的过程,但我无法弄清楚如何使某个名称特别成功。情况就是这样:

enter image description here

名为年龄的列将显示包含一个或多个名称的单元格,以逗号分隔,以防有多个值。以“Young”为例很容易告诉COUNTIF公式给出表示该单词出现次数的数字,或者是单元格中的唯一值,或者是具有较长字符串值的单元格的一部分通过给出公式“ Young ”声明。

当我希望公式计算“成熟”出现在我的专栏中的次数时,问题出现了。只有在说“成熟”而没有采取所有“Early_Mature”或“Semi_Mature”的情况下,我才能想出让它算进的方法

我知道对于熟悉Excel基础知识的人来说这很容易,所以我认为不需要提供更多细节。

谢谢

4 个答案:

答案 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

表单中的用法

Usage

答案 3 :(得分:0)

另一种方法是将“成熟”改为“Fully_Mature”。然后你可以使用Countif()。

您必须分步执行此操作:
1)将“Early_Mature”更改为“E_M”
2)将“Semi_Mature”更改为“S_M”
3)将“成熟”改为“完全成熟”
4)步骤1)的逆转。
5)步骤2)的反向。