カンマ区切りの値の文字列を配列に変換する方法

カンマ区切りの値の文字列を配列に変換する方法

次のような文字列を含むセルがいくつかあります。

「ジョン、カーラ、ピーター、ジョン、ボブ、クリス、カーラ、アンドレア」

名前がいくつの異なる人の名前が含まれているか (つまり、一意の値がいくつあるか) を数えたいと思います。上記の文字列の数は 6 になります。文字列内の名前の合計数は大きく異なる可能性があることに注意してください。名前が 1 つだけのものもあれば、最大で 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))

関連情報