2 votes

Comment puis-je signaler la présence/absence d'une sous-chaîne spécifique dans une chaîne de caractères dans Excel ?

Nous disposons d'une liste de mots-clés associés à une liste de documents. La liste a été créée à partir de la fréquence des mots dans le texte du document. Nous essayons d'ajouter un poids aux mots-clés selon qu'ils apparaissent ou non dans le nom du document. Par exemple, si nous avons un document appelé Agency_Solutions.doc alors le mot-clé agency serait classé plus haut dans la liste que telephone .

Pour compliquer les choses, chaque document a soit the , a , an comme premier mot-clé, sur la base des comptages. Bien entendu, tout cela doit être exclu. VLOOKUP colonne avec 171 mots "communs" pour l'exclusion.

Voici mon problème : si je MATCH(WORD,TITLE,0) , Agency n'est pas égal à Agency_Solutions (ou Agency Solutions ; j'ai utilisé SUBSTITUTE pour créer des versions "propres" de tous les titres) et n'est pas pondéré. Si je SEARCH(WORD,TITLE) I poids a parce que a apparaît dans Agency_Solutions . FIND renverrait des résultats identiques à SEARCH dans ce cas. Le rocher. Endroit difficile.

J'ai essayé plusieurs itérations, mais je n'ai jamais obtenu de résultats identifiant le mot-clé comme une sous-chaîne autonome dans le nom du document. Des idées ?

EDIT : Voici quelques données

Liste d'exclusion (à coller dans la colonne A)

a
an
is
the
what
when
who

Document, mot-clé, nombre (Cols B, C, & D)

Keyboard_and_mouse_problems.txt the 15
Keyboard_and_mouse_problems.txt an  15
Keyboard_and_mouse_problems.txt a   14
Keyboard_and_mouse_problems.txt when    12
Keyboard_and_mouse_problems.txt system  8
Keyboard_and_mouse_problems.txt keyboard    8
Keyboard_and_mouse_problems.txt mouse   8
Keyboard_and_mouse_problems.txt when    9
Keyboard_and_mouse_problems.txt what    9
Keyboard_and_mouse_problems.txt who 8
Keyboard_and_mouse_problems.txt is  8
Keyboard_and_mouse_problems.txt phone   6
Keyboard_and_mouse_problems.txt help    6
Keyboard_and_mouse_problems.txt desk    5
Keyboard_and_mouse_problems.txt cable   4
Keyboard_and_mouse_problems.txt jack    4

Agency_Solutions.txt    X   2
Agency_Solutions.txt    c   1
Agency_Solutions.txt    on  1

Ensuite, mes formules :

Col E   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"notFound")    Is this in the exclusion list?
Col F   =IFERROR(VLOOKUP(C2,$A$2:$A$225,1,0),"")        Exclude this word
Col G   =IF(F2=C2,0,C2)                     Include this word
Col H   =IF(ISNUMBER(SEARCH(C2,B2)),100,0)          Title Weight
Col I   =IF(G2=0,0,D2+H2)                   Weighted Keywords
Col J   =IF(AND(H2=100,G2=0),"BAD","OK")            OK or Bad calculations

3voto

user187330 Points 11

Vous devriez essayer VLOOKUP avec des caractères génériques, par exemple si nous avons apple en A1 , =VLOOKUP("*"&A1&"*";B:C;2;0) correspondra à n'importe quelle chaîne de caractères ayant apple quelle que soit sa position. Voir pour plus de détails mon autre réponse : https://superuser.com/a/552742/187330

Conseil : pour éviter la sensibilité à la casse, utilisez l'option LOWER pour la comparaison.

1voto

barry houdini Points 10704

Si vous n'avez que des espaces entre les mots, vous pouvez rechercher le mot avec des espaces de part et d'autre pour éviter les correspondances partielles.

=ISNUMBER(SEARCH(" "&WORD&" "," "&TITLE&" "))

....bien que cela ne soit pas possible si vous avez des signes de ponctuation comme _ ou . dans TITLE.....mais vous pouvez utiliser n'importe quel nombre de SUBSTITUTE pour les remplacer par des espaces, comme suit

=ISNUMBER(SEARCH(" "&WORD&" "," "&SUBSTITUTE(SUBSTITUTE(TITLE,"_"," "),"."," ")&" "))

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X