So konvertieren Sie eine Zeichenfolge mit durch Kommas getrennten Werten in ein Array

So konvertieren Sie eine Zeichenfolge mit durch Kommas getrennten Werten in ein Array

Ich habe mehrere Zellen mit Zeichenfolgen wie dieser:

„John, Carla, Peter, John, Bob, Chris, Carla, Andrea“

Ich möchte zählen, wie viele verschiedene Personen benannt sind (d. h. wie viele eindeutige Werte). Die Anzahl für die obige Zeichenfolge wäre 6. Beachten Sie, dass die Gesamtzahl der Namen in den Zeichenfolgen sehr unterschiedlich sein kann. Einige haben nur einen Namen und die größte hat 14 (wobei einige doppelt vorkommen können). Einige Namen enthalten Leerzeichen (z. B. „Peter Smith, Andrea, Carla Moore“), aber wir können uns auf die Kommas verlassen, um sie zu trennen.

Ich denke, die Lösung besteht darin, den String in ein Array umzuwandeln und dann eine Kombination der Formeln SUM, IF und FREQUENCY zu verwenden, die ich online gefunden habeHier, auf dieses Array angewendet.

Ich weiß jedoch nicht, wie ich den String in ein Array konvertiere (falls das der richtige Weg ist).

Antwort1

Probieren Sie diese kleine benutzerdefinierte Funktion aus:

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

Bildbeschreibung hier eingeben

Antwort2

Diese Formel iteriert die „Wörter“ und zählt nur die eindeutigen Wörter.

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

Während der Iteration vergleicht es es mit dem aktuellen Wert und allem, was vorher kam FIND(). Wenn es nicht gefunden wird, wird ein Fehler zurückgegeben und somit gezählt.

Bildbeschreibung hier eingeben

Antwort3

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

verwandte Informationen