Como posso marcar a presença / ausência de uma substring específica em uma string no Excel?

2

Temos uma lista de palavras-chave associadas a uma lista de documentos. A lista foi criada a partir das contagens de frequência das palavras no texto do documento. Estamos tentando adicionar um peso às palavras-chave com base no fato de aparecerem ou não no nome do documento. Por exemplo, se tivéssemos um documento chamado Agency_Solutions.doc , a palavra-chave agency seria classificada na lista acima de telephone .

Para complicar, cada documento tem the , a , an como palavra-chave superior, com base nas contagens. Claro que tudo isso precisa ser excluído; Eu configurei uma coluna VLOOKUP com 171 palavras 'comuns' para exclusão.

Este é o meu problema: se eu MATCH(WORD,TITLE,0) , Agency não for igual a Agency_Solutions (ou Agency Solutions ; usei SUBSTITUTE para criar versões 'limpas' de todos os títulos) e não obtenho pesada. Se eu SEARCH(WORD,TITLE) peso a porque a aparece em Agency_Solutions . FIND retornaria resultados idênticos para SEARCH nesta instância. Rocha. Lugar difícil.

Eu tentei algumas iterações de coisas, mas nunca obtive resultados que identificassem a palavra-chave como uma substring autônoma no nome do documento. Alguma idéia?

EDIT: Aqui estão alguns dados

Lista de exclusão (cole na col A)

a
an
is
the
what
when
who

Documento, palavra-chave, contagem (Cols B, C e 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

Então, minhas fórmulas:

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
    
por dwwilson66 19.02.2013 / 18:00

2 respostas

1

Se você tiver apenas espaços entre as palavras, poderá pesquisar a palavra com espaços de cada lado para evitar correspondências parciais, por exemplo,

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

.... embora isso caia se você tiver pontuação como _ ou. em TITLE ..... mas você pode usar qualquer número de funções SUBSTITUTE para substituir aquelas com espaços como este

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

    
por 19.02.2013 / 20:05
3

Você deve tentar VLOOKUP com curingas, por exemplo se tivermos apple em A1 , =VLOOKUP("*"&A1&"*";B:C;2;0) corresponderá a qualquer string que tenha apple , independentemente da posição. Veja para mais minha outra resposta: link

Dica: para evitar a sensibilidade do caso, use a função LOWER para comparar.

    
por 19.02.2013 / 18:08