Cómo convertir una cadena de valores separados por comas en una matriz

Cómo convertir una cadena de valores separados por comas en una matriz

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

ingrese la descripción de la imagen aquí

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.

ingrese la descripción de la imagen aquí

Respuesta3

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

información relacionada