如何计算具有多个文本字符串之一的唯一行?

时间:2015-04-20 18:40:21

标签: excel text count sum

我有一个大表,列中有多个不同的文本字符串组合,我试图得到包含文本字符串中混合的一些值的唯一行的计数。例如:

Category   Items
A          Apple, Orange, Frog
B          Tree, Rock
C          Banana, Orange, River, Monkey
D          River, Beaver, Horse
E          Monkey, Banana

我想找到一个excel公式来评估上面的表并返回包含任何水果(例如Apple,Orange或Banana)的唯一行数。在这种情况下,它将是类别A,C和E ...总共3行。我要查找的实际文本字符串列表是~100(例如苹果,香蕉,橙子,猕猴桃,草莓,甜瓜,葡萄等)

1 个答案:

答案 0 :(得分:0)

我无法将其视为常规Excel功能。我不知道你是否对VBA解决方案感兴趣,但我还是试了一下。

使用此功能:

  • Alt + F11 打开VB编辑器(或在Developer选项卡下选择' Visual Basic')
  • 右键点击'模块'然后插入 - >模块
  • 将以下代码粘贴到刚刚创建的模块中

    Function FindWords(List As String, Delimiter As String, ArrayIn As Range)
    
        Dim Words As Variant
        Dim NumUnique As Long
        Dim Element As Range
    
        Words = Split(List, Delimiter)
    
        NumUnique = 0
    
        Dim i As Integer
        For i = LBound(Words) To UBound(Words)
            For Each Element In ArrayIn
                If InStr(1, Element.Value, Words(i), vbTextCompare) > 0 Then
                    NumUnique = NumUnique + 1
                End If
            Next Element
        Next i
    
        FindWords = NumUnique
    
    End Function
    

然后,您可以像使用任何其他Excel功能一样使用此功能。在您希望显示唯一行数的任何单元格中,只需键入=FindWords(List, Delimiter, ArrayIn)

List是您要查找的分隔字符串值。在您的示例中,您将传入包含值Apple, Orange, Banana的任何单元格。

Delimiter是您的列表中划分的项目。在您的示例中,分隔符是带空格的逗号,因此应传入", "

ArrayIn变量是您要查看列表中项目的单元格范围。在您的示例中,假设Category位于单元格A1中,您将传入$B$2:$B$6,它将查看所​​有这些单元格。

让我们说你的100个单词的列表在单元格D1中,然后函数将被调用如下: =FindWords(D1,", ",$B$2:$B$6)