如何將逗號分隔值的字串轉換為陣列

如何將逗號分隔值的字串轉換為陣列

我有幾個帶有字串的單元格,如下所示:

“約翰、卡拉、彼得、約翰、鮑勃、克里斯、卡拉、安德里亞”

我想計算有多少不同的人被命名(即有多少唯一值)。上面字串的計數為 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))

相關內容