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

0

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

"João, Carla, Pedro, João, Bob, Chris, Carla, Andrea"

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

Acho que a solução é converter a string em uma matriz e, em seguida, usar uma combinação das fórmulas SUM, IF e FREQUENCY que encontrei on-line aqui , aplicado a esse array.

No entanto, não sei como converter a string em uma matriz (se esse for o caminho a percorrer).

    
por PrincessLilly 03.03.2018 / 18:03

2 respostas

1

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

    
por 03.03.2018 / 18:55
1

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

Como itera, compara-a à corrente com tudo o que veio antes com FIND() . E o erro é retornado se não for encontrado e, portanto, é contado.

    
por 03.03.2018 / 20:54