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