Atribua uma categoria a uma célula dependendo das strings

0

eu tentarei xplain o que eu gostaria de fazer. Eu tenho um arquivo enorme que relata o texto do alarme de diferentes tipos de sistemas

i a primeira coluna que recebi o alarme (1 linha = 1 texto de alarme)
Eu gostaria de associar uma categoria (na segunda coluna) dependendo de algumas palavras extraídas do texto do alarme

por exemplo: se a palavra aaaa estiver presente no alarme, a categoria deve ser "A", se bbbb estiver presente, a categoria deve ser "B"; .....

eu tenho muitas categorias, mais de 50 ... e eu quero ser capaz de adicionar novas categorias, se necessário

eu encontrei uma "solução" com esse tipo de fórmula

IF(ISNUMBER(SEARCH("Wafer not";BD2));"HANDLING";"UKN")

BD2 é onde o texto do alarme é armazenado

== > basicamente eu incluí uma nova fórmula dentro da anterior para cobrir todas as categorias

parece que (apenas um extrato):;

IF(ISNUMBER(SEARCH("mixing";BD2));"CC MIXING ALARM";IF(ISNUMBER(SEARCH("port";BD2));"LP ERROR";IF(ISNUMBER(SEARCH("mass flow";BD2));"MFC";IF(ISNUMBER(SEARCH("CC comm";BD2));"CC COMMUNICATION";IF(ISNUMBER(SEARCH("unclear";BD2));"UNCLEARED ALARM";IF(ISNUMBER(SEARCH("door";BD2));"COVER";IF(ISNUMBER(SEARCH("wafer level sens";BD2));"WAFER LEVEL SENSOR";IF(ISNUMBER(SEARCH("tank A";BD2));"COOLING TANK";IF(ISNUMBER(SEARCH("tank B";BD2));"COOLING TANK";IF(ISNUMBER(SEARCH("hdiw-unit";BD2));"HDIW UNIT";IF(ISNUMBER(SEARCH("labyrinth";BD2));"LABYRINTH ERROR";IF(ISNUMBER(SEARCH("FAN";BD2));"FAN";IF(ISNUMBER(SEARCH("handling";BD2));"HANDLING";IF(ISNUMBER(SEARCH("process has stopped";BD2));"PROCESS STOP";"UKN")))))))))))))

== > mas é realmente feio ;-) .... se se se se se se .....

tenho certeza que algo mais legal e inteligente pode existir

se você tiver uma ideia para me ajudar, seria ótimo

obrigado antecipadamente pela sua ajuda

considera

    
por yannick 06.10.2016 / 10:24

1 resposta

0

Aqui está uma fórmula de matriz que você pode usar:
=INDEX(Table2[[#All],[category]],MAX(IF(ISNUMBER(SEARCH(Table2[[#All],[word]],D2)),ROW(Table2[[#All],[word]]),"")))

  • IF(ISNUMBER(SEARCH(Table2[[#All],[word]],D2)),ROW(Table2[[#All],[word]]),"") - pesquisa cada Word em seu texto, retorna o número da linha se encontrado, "" (string vazia) se não for encontrado
  • MAX(IF(...)) - selecione o maior número retornado por IF (se várias categorias forem correspondidas, então a última será retornada)
  • =INDEX(Table2[[#All],[category]],MAX(...)) - retorna a categoria da linha correspondente
  • é uma fórmula de matriz, então você precisa pressionar CTRL + SHIFT + ENTER para inseri-lo.

Para usar isso, você precisa converter seu intervalo contendo palavras-chave e categorias em uma tabela (tabela de inserção), você pode precisar alterar o nome da tabela em sua fórmula.

    
por 06.10.2016 / 11:11