Estou tentando extrair informações do produto entre "en_US@" e ";" então, por exemplo, se eu recebesse "en_US@Terminal Block;" Eu gostaria que o bloco terminal fosse devolvido. Meu método para fazer isso foi:
=MID(B2, FIND("en_US@",B2)+6, FIND(";", B2, FIND("@", B2)+1)-FIND("@",B2)-1)
qual é correto.
Minha pergunta é: posso escrever um código para incluir "??_??@" como uma opção para o código procurar, então eu procuraria "en_US" ou "??_??" iniciar a extração do texto?
Responder1
Isso parece estar funcionando:
=IF(SUMPRODUCT( -- ISNUMBER(SEARCH({"en_US@","~?~?_~?~?@"},A1)))>0,MID(A1, FIND("@",A1)+1, FIND(";", A1, FIND("@", A1)+1)-FIND("@",A1)-1),"NA")
A mágica está no bit SUMPRODUCT( -- ISNUMBER(SEARCH({...},cell)))>0, discutidoaqui
Para SEARCH() especificamente para um "?", você deve delimitar cada um com um til, já que a pesquisa trata "?" como um curinga por padrão.
A única outra coisa que mudou em relação ao original foi começar com um IF() para ver se encontra uma das sequências de caracteres e depois encontra o "@".