我有一个大表,列中有多个不同的文本字符串组合,我试图得到包含文本字符串中混合的一些值的唯一行的计数。例如:
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(例如苹果,香蕉,橙子,猕猴桃,草莓,甜瓜,葡萄等)
答案 0 :(得分:0)
我无法将其视为常规Excel功能。我不知道你是否对VBA解决方案感兴趣,但我还是试了一下。
使用此功能:
将以下代码粘贴到刚刚创建的模块中
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)