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

327
PrincessLilly

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 werden (dh wie viele eindeutige Werte). Die Anzahl für die obige Zeichenfolge wäre 6. Beachten Sie, dass die Gesamtanzahl der Namen in den Zeichenfolgen sehr unterschiedlich sein kann. Einige haben nur einen Namen und der größte hat 14 (von denen einige dupliziert werden 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 zu konvertieren und dann eine Kombination der Formeln SUM, IF und FREQUENCY zu verwenden, die ich hier online gefunden und auf dieses Array angewendet habe.

Ich weiß jedoch nicht, wie ich die Zeichenfolge in ein Array umwandeln soll (wenn dies der richtige Weg ist).

0
Hast du etwas probiert? Toto vor 6 Jahren 0
Ich fand das hier https://www.ozgrid.com/forum/forum/help-forums/excel-general/82636-array-constant-from-cell-values ​​und versuchte es zu benutzen, konnte es aber nicht verstehen. Dann habe ich versucht, jeden String mit der Funktion "Text in Spalten" aufzuteilen, und anschließend erwähne ich dieses Online-Tutorial, um die Werte in einem Array zu zählen, aber ich müsste die Formel manuell in jede Zeile eingeben, sonst ändert sich das Array nicht zur nächsten Reihe. PrincessLilly vor 6 Jahren 0

2 Antworten auf die Frage

1
Gary's Student

Versuchen Sie diese kleine benutzerdefinierte Funktion:

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 

enter image description here

Es hat sehr gut funktioniert, danke! PrincessLilly vor 6 Jahren 0
Ich habe jetzt oben "Application.Volatile" hinzugefügt, damit diese Funktion automatisch aktualisiert werden kann, wenn das Arbeitsblatt neu berechnet wird. PrincessLilly vor 6 Jahren 1
@PrincessLilly Gute Idee ..................................... Gary's Student vor 6 Jahren 0
1
Scott Craner

Diese Formel wird die "Wörter" iterieren und nur das Unique zählen.

=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 es iteriert, vergleicht es mit dem Strom mit dem, was vorher mit kam FIND(). Wenn ein Fehler nicht gefunden wird, wird ein Fehler zurückgegeben und somit gezählt.

enter image description here

Cleverer Einsatz von `SUMPRODUCT ()` Gary's Student vor 6 Jahren 0
Eine gute Option für jemanden, der eine Formel verwenden möchte, die nicht benutzerdefiniert ist. PrincessLilly vor 6 Jahren 0