Как преобразовать строку значений, разделенных запятыми, в массив

Как преобразовать строку значений, разделенных запятыми, в массив

У меня есть несколько ячеек со строками, например, такими:

"Джон,Карла,Питер,Джон,Боб,Крис,Карла,Андреа"

Я хотел бы посчитать, сколько разных людей названо (т. е. сколько уникальных значений). Количество для строки выше будет равно 6. Обратите внимание, что общее количество имен в строках может сильно различаться. У некоторых есть только одно имя, а у самой большой — 14 (некоторые могут дублироваться). В некоторых именах есть пробелы (например, "Питер Смит, Андреа, Карла Мур"), но мы можем положиться на запятые, чтобы разделить их.

Я думаю, что решение состоит в том, чтобы преобразовать строку в массив, а затем использовать комбинацию формул 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))

Связанный контент