Excel - добавьте формулу Excel в FilterXML
У меня есть таблица Excel, содержащая список строк в одном столбце. Список строк состоит из нескольких чисел разной длины, разделенных «/» и «;» Первая запись строки - это идентификатор кода (который всегда имеет длину 3) (красный в примере), за которым следует «/», затем количество (которое различается по длине) (зеленый в примере), за которым следует «;» если строка продолжается.
Теперь с помощью члена я могу выделить зеленое число по следующей формуле:
=IF(ISBLANK(A4);"";TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A4;"/";";");";";"</s><s>")&"</s></t>";"//s[position() mod 2 = 0]")))
Однако мне все еще нужна другая формула, которая умножает зеленое число на переменную, если условие выполнено.
Пример функции:
=IFS(B2<=10;B2*1,25;B2<=20;B2*1,18;B2<=100;B2*1,05;B2<=250;B2*1,01;B2>250;B2)
Есть ли способ совместить обе эти функции?
Ответы
Очень хороший способ справиться с этим - присвоить полный массив имени, скажем, переменной через LET(). Таким образом, ваша формула B2станет:
=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)),"")
Однако для этого требуется Excel O365. Но поскольку вы переносите массив, похоже, он у вас есть.