Excel - dodaj formułę Excela w FilterXML

Nov 05 2020

Mam arkusz kalkulacyjny programu Excel zawierający listę ciągów w jednej kolumnie. Lista ciągów składa się z kilku liczb o różnych długościach, oddzielonych znakami „/” i „;” Pierwsza pozycja ciągu to identyfikator kodu (który zawsze ma długość 3) (na przykład czerwony), po którym następuje „/”, a następnie kwota (o różnej długości) (w przykładzie zielonym), po której następuje „;” jeśli ciąg jest kontynuowany.

Z pomocą członka mogę teraz wyodrębnić zieloną liczbę za pomocą następującego wzoru:

=IF(ISBLANK(A4);"";TRANSPOSE(FILTERXML("<t><s>"&SUBSTITUTE(SUBSTITUTE(A4;"/";";");";";"</s><s>")&"</s></t>";"//s[position() mod 2 = 0]")))

Jednak nadal potrzebuję innej formuły, która mnoży zieloną liczbę przez zmienną, jeśli spełniony jest warunek.

Przykładowa funkcja:

=IFS(B2<=10;B2*1,25;B2<=20;B2*1,18;B2<=100;B2*1,05;B2<=250;B2*1,01;B2>250;B2)

Czy istnieje sposób na połączenie obu tych funkcji?

Odpowiedzi

1 JvdV Nov 05 2020 at 13:56

Bardzo fajnym sposobem radzenia sobie z tym jest przypisanie pełnej tablicy do nazwy, powiedzmy zmiennej, poprzez LET(). Więc twoja formuła w B2będzie wyglądała następująco:

=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)),"")

Wymaga jednak programu Excel O365. Ale ponieważ transponujesz tablicę, wygląda na to, że ją masz.