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
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.
Responder3
=COUNTA(UNIQUE(TEXTSPLIT(A1,","),TRUE))