如何将逗号分隔值的字符串转换为数组

如何将逗号分隔值的字符串转换为数组

我有几个带有如下字符串的单元格:

“约翰、卡拉、彼得、约翰、鲍勃、克里斯、卡拉、安德里亚”

我想计算有多少个不同的人有名字(即有多少个唯一值)。上面的字符串的计数将是 6。请注意,字符串中的名字总数可能相差很大。有些只有一个名字,而最大的一个有 14 个名字(有些可以重复)。有些名字中有空格(例如“Peter Smith、Andrea、Carla Moore”),但我们可以依靠逗号将它们分开。

我认为解决方案是将字符串转换为数组,然后使用我在网上找到的公式 SUM、IF 和 FREQUENCY 的组合这里,应用于该数组。

但是我不知道如何将字符串转换为数组(如果这是可行的方法)。

答案1

尝试这个小的用户定义函数:

Public Function PeopleKounter(s As String) As Long
    Dim DQ As String, c As Collection
    Set c = New Collection
    DQ = Chr(34)

    ary = Split(Replace(s, DQ, ""), ",")

    On Error Resume Next
        For Each a In ary
            c.Add a, CStr(a)
        Next a
    On Error GoTo 0

    PeopleKounter = c.Count
End Function

在此处输入图片描述

答案2

此公式将迭代“单词”并且仅计算唯一单词。

=SUMPRODUCT(--(ISERROR(FIND(TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),(ROW($1:$17)-1)*99+1,99)),TRIM(MID(SUBSTITUTE(A1,",",REPT(" ",99)),1,(ROW($1:$17)-1)*99+1))))))

在迭代过程中,它会将其与当前值以及之前的所有值进行比较FIND()。如果未找到,则返回错误,从而将其计算在内。

在此处输入图片描述

答案3

=COUNTA(UNIQUE(TEXTSPLIT(A1,","),TRUE))

相关内容