Como converter uma string de valores separados por vírgula em um array

Como converter uma string de valores separados por vírgula em um array

Eu tenho várias células com strings como esta:

"John, Carla, Peter, John, Bob, Chris, Carla, Andrea"

Gostaria de contar quantas pessoas diferentes são nomeadas (ou seja, quantos valores únicos). A contagem para a string acima seria 6. Observe que a quantidade total de nomes nas strings pode variar bastante. Alguns possuem apenas um nome e o maior possui 14 (onde alguns podem ser duplicados). Alguns nomes possuem espaços (ex. "Peter Smith,Andrea,Carla Moore"), mas podemos contar com as vírgulas para separá-los.

Acho que a solução é converter a string em um array e depois usar uma combinação das fórmulas SUM, IF e FREQUENCY que encontrei onlineaqui, aplicado a essa matriz.

No entanto, não sei como converter a string em um array (se esse for o caminho a seguir).

Responder1

Experimente esta pequena função definida pelo usuário:

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

insira a descrição da imagem aqui

Responder2

Esta fórmula irá iterar as “palavras” e contar apenas o Único.

=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))))))

À medida que itera, ele o compara ao atual com tudo o que veio antes FIND(). E o erro é retornado se não for encontrado e, portanto, é contado.

insira a descrição da imagem aqui

Responder3

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

informação relacionada