Excel - Ajouter une formule Excel dans FilterXML
J'ai une feuille de calcul Excel contenant une liste de chaînes dans une colonne. La liste de chaînes est composée de plusieurs nombres de différentes longueurs, séparés par «/» et «;» La première entrée de la chaîne est un code id (qui a toujours une longueur de 3) (rouge dans l'exemple) suivi d'un «/» puis d'un montant (qui varie en longueur) (vert dans l'exemple) suivi d'un «;» si la chaîne continue.
Avec l'aide d'un membre, je peux maintenant isoler le nombre vert avec la formule suivante:
=IF(ISBLANK(A4);"";TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A4;"/";";");";";"</s><s>")&"</s></t>";"//s[position() mod 2 = 0]")))
Cependant, j'ai toujours besoin d'une autre formule qui multiplie le nombre vert par une variable, si une condition est remplie.
Exemple de fonction:
=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-t-il un moyen de combiner ces deux fonctions?
Réponses
Une très bonne façon de gérer cela consiste à affecter le tableau complet à un nom, disons une variable, via LET(). Ainsi votre formule B2deviendrait:
=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)),"")
Cependant, il nécessite Excel O365. Mais puisque vous transposez le tableau, il semble que vous l'ayez.