Zählen Sie die Vorkommen von Teilzeichenfolgen in einer Zelle

6656
johnL

Wie kann ich die Anzahl der Vorkommen eines Teilstrings in einer Zelle zählen?

Zum Beispiel:

| | A | | 1 |John,John,Tom,David| 

Welche Formel würde ich verwenden, wenn ich die Anzahl der Vorkommen von "John" in Zelle A1 (= 2) zurückgeben möchte?

2

5 Antworten auf die Frage

4
johnL

Wow, nachdem ich einen Monat nach diesem Problem gesucht hatte, bin ich auf die Antwort gestoßen, nachdem ich diese Frage gestellt hatte. Hier ist das, worauf ich gekommen bin, falls jemand anderes dieses Problem hat.

=SUM(IF(ISNUMBER(FIND("John"; SPLIT(A1; ",")));1;0)) 

Dies ist eine Matrixformel, die mit Ctrl+ Shift+ eingegeben werden muss Enter.

Wenn jemand an eine bessere Lösung für dieses Problem denkt, lass es mich wissen!

Wie mache ich das für mehrere Zellen? Wenn Sie also mehrere Zellen wie A1 hätten? Michael Trouw vor 9 Jahren 0
Die SPLIT-Funktion funktioniert außerhalb von VBA? fixer1234 vor 9 Jahren 0
Funktioniert nicht in Excel 2013 und sagt "diese Funktion (dh" SPLIT "ist nicht gültig). Die Parameter in den Funktionen sollten durch `,` nicht `;` getrennt werden. Kenneth L vor 5 Jahren 0
2
variant

Ich denke, Sie haben wahrscheinlich den besten Weg gefunden.

Eine Alternative:

=(LEN(A1)-LEN(SUBSTITUTE(A1,"John",)))/LEN("John") 
Das ist ein interessanter Ansatz mit LEN. Wird diese Strategie berücksichtigen, wenn andere Probleme in Betracht gezogen werden. Vielen Dank! johnL vor 13 Jahren 0
Dies war die Antwort, die ich für Google Spreadsheets verwenden musste. Andrew Downes vor 9 Jahren 0
2
erwaman

Hier ist ein Ansatz, der in Google-Tabellen funktioniert:

=COUNTIF(SPLIT(A1,","),"John") 
Ist dies spezifisch für bestimmte Versionen von Excel? Mir war nicht bekannt, dass SPLIT außerhalb von VBA funktioniert. fixer1234 vor 9 Jahren 1
@ fixer1234: Ich denke, das funktioniert nur in Google-Tabellen. Ich habe die Antwort geklärt. erwaman vor 9 Jahren 0
Funktioniert nicht für mich in Google Spreadsheet. Das einzige, was ich auf dieser Seite in Google Spreadsheet gefunden habe, ist die Antwort von @ variant. Andrew Downes vor 9 Jahren 0
Funktioniert für mich: https://docs.google.com/spreadsheets/d/1xSankYnnJpPNS58orPiD6SoYaGLiEC2eHViRB-Bfahc/edit?usp=sharing erwaman vor 9 Jahren 0
1
Gneuh

Nur für Google Sheets

Ich habe den folgenden alternativen Weg gefunden:

=LEN(REGEXREPLACE(SUBSTITUTE(SUBSTITUTE(A1;"@";"");"John";"@");"[^@]";"")) 

Erläuterung:

  • Wir wählen ein Sonderzeichen (kann ein beliebiges Zeichen sein, das sich nicht in der Ziel-Unterzeichenfolge befindet) und entfernt es aus der Zeichenfolge
  • Wir ersetzen den gesuchten Teilstring durch dieses Zeichen
  • Wir ersetzen jeden Charakter, der nicht unser spezieller Charakter ist, durch nichts
  • Wir zählen die Länge der resultierenden Zeichenfolge und dies ist die Anzahl der Vorkommen der Unterzeichenfolge.
Das tut mir leid, als ich diesen Thread gefunden habe, der nach einer Lösung für ein Problem mit Google Sheet sucht, an das ich noch nicht einmal über Excel nachgedacht habe ... es wurde behoben. Gneuh vor 5 Jahren 0
0
Felix

Ich habe nicht den Ruf, in dem obigen Thread einen Kommentar abzugeben, aber ich konnte die Antwort von JohnL so erweitern, dass sie in mehreren Zellen funktioniert:

=ArrayFormula(SUM(IF(ISNUMBER(find ("search text", split(Concatenate(A1:A3), ","))),1,0))) 

Wo A1:A3sind die Zellen und "Suchtext" ist der zu durchsuchende Text.