Excel - Adicione uma fórmula do Excel em FilterXML
Eu tenho uma planilha do Excel contendo uma lista de strings em uma coluna. A lista de strings é composta por vários números de comprimentos variados, separados por “/” e “;” A primeira entrada da string é um id de código (que sempre tem um comprimento de 3) (vermelho no exemplo) seguido por um “/” e uma quantidade (que varia em comprimento) (verde no exemplo) seguido por um “;” se a string continua.
Com a ajuda de um membro, agora posso isolar o número verde com a seguinte fórmula:
=IF(ISBLANK(A4);"";TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A4;"/";";");";";"</s><s>")&"</s></t>";"//s[position() mod 2 = 0]")))
No entanto, ainda preciso de outra fórmula que multiplique o número verde por uma variável, se uma condição for atendida.
Função de exemplo:
=IFS(B2<=10;B2*1,25;B2<=20;B2*1,18;B2<=100;B2*1,05;B2<=250;B2*1,01;B2>250;B2)
Existe uma maneira de combinar essas funções?
Respostas
Uma maneira muito boa de lidar com isso é atribuir o array completo a um nome, digamos uma variável, por meio de LET(). Portanto, sua fórmula B2se tornaria:
=IF(A2<>"",LET(MNT,TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A2,"/",";"),";","</s><s>")&"</s></t>","//s[position() mod 2 = 0]")),IFS(MNT<=10,MNT*1.25,MNT<=20,MNT*1.18,MNT<=100,MNT*1.05,MNT<=250,MNT*1.01,MNT>250,MNT)),"")
No entanto, requer Excel O365. Mas, como você está transpondo a matriz, parece que você tem isso.