web-dev-qa-db-fra.com

Formule dans Excel pour compter les occurrences de sous-chaînes dans les chaînes

J'essaie de compter le nombre de fois qu'une sous-chaîne apparaît dans une colonne de données de chaîne dans Excel. Veuillez voir l'exemple ci-dessous.

La colonne de données de chaîne (tweets) ressemble à ceci:

   A
1  An example string with @username in it
2  RT @AwesomeUser says @username is awesome

La colonne avec "sous-chaînes" (noms d'écran Twitter) ressemble à ceci:

   B
1  username
2  AwesomeUser

Je souhaite utiliser une formule pour compter le nombre de fois qu'une sous-chaîne de B1, B2, etc. apparaît dans les chaînes de la colonne A. Par exemple: une formule recherchant B1 retournerait "2" et une recherche B2 reviendrait "1".

Je ne peux pas le faire de cette façon:

=COUNTIF(A:A, "username")

parce que COUNTIF recherche uniquement les chaînes, pas les sous-chaînes. Cette formule retournerait toujours "0".

Voici une formule Je pensais que cela pourrait le faire:

=SUMPRODUCT((LEN(A:A)-(LEN(SUBSTITUTE(A:A,"username",""))))/LEN("username"))

Malheureusement, j'ai 16 000 entrées dans la colonne B et des dizaines de milliers dans A, donc le comptage des caractères ne fonctionnera même pas sur un PC haute puissance (le résultat renvoyé par la fonction est également suspect).

J'ai pensé à utiliser:

=COUNTIF(A:A, "*username*")

mais COUNTIF requiert une chaîne avec les opérateurs étoiles; Je dois utiliser des références de cellule en raison du volume de données.

Ma question: quelqu'un sait-il comment utiliser une formule pour cela? Si vous utilisez COUNTIF, comment puis-je obtenir une référence de cellule dans la partie conditionnelle de l'instruction (ou utiliser une fonction pour remplacer la chaîne dans la cellule référencée dans la partie conditionnelle d'une instruction COUNTIF)?

Je sais que je pourrais analyser les données, mais je voudrais savoir comment le faire dans Excel.

22
Andrew

Vous y êtes presque, utilisez

=COUNTIF(A:A, "*"&B1&"*")

(testé dans Excel 2010)

39
chris neilsen

ne solution Excel très simple pour l'occurrence de la chaîne x ("ABC") dans la chaîne y ("ABC 123 ABC 23dfABC"):

  1. Identifiez la longueur de la chaîne y. Ly = len (y)
  2. Remplacez la chaîne x par la chaîne x1 (ajoutez seulement 1 caractère de tout caractère pris en charge à la chaîne x. Par exemple "ABC" => "ABC_") et calculez la longueur de la nouvelle chaîne chaîne y1. Ly1 = len (substitut (y, x, x1)).
  3. Nombre d'occurrences de la chaîne x) dans la chaîne y = Ly1-Ly

Nombre d'occurrences: len (substitut (y, x, x1)) - len (y)

Nomenclature for Understanding: chaîne x: "ABC" chaîne x1: "ABC_" chaîne y: "ABC 123 ABC 23dfABC" chaîne y1: "" ABC_ 123 ABC_ 23dfABC_ ""

2
vinod bherwal