Tengo varias celdas con cadenas como esta:
"Juan, Carla, Pedro, Juan, Bob, Chris, Carla, Andrea"
Me gustaría contar cuántas personas diferentes se nombran (es decir, cuántos valores únicos). El recuento de la cadena anterior sería 6. Tenga en cuenta que la cantidad total de nombres en las cadenas puede variar mucho. Algunos tienen un solo nombre y el más grande tiene 14 (donde algunos se pueden duplicar). Algunos nombres tienen espacios (por ejemplo, "Peter Smith, Andrea, Carla Moore"), pero podemos confiar en las comas para separarlos.
Creo que la solución es convertir la cadena en una matriz y luego usar una combinación de las fórmulas SUMA, SI y FRECUENCIA que encontré en línea.aquí, aplicado a esa matriz.
Sin embargo, no sé cómo convertir la cadena en una matriz (si ese es el camino a seguir).
Respuesta1
Pruebe esta pequeña función definida por el usuario:
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
Respuesta2
Esta fórmula iterará las "palabras" y solo contará las únicas.
=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))))))
A medida que itera, lo compara con el actual con todo lo anterior FIND()
. Y se devuelve un error si no se encuentra y así se cuenta.
Respuesta3
=COUNTA(UNIQUE(TEXTSPLIT(A1,","),TRUE))