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 แต่เนื่องจากคุณกำลังย้ายอาร์เรย์ดูเหมือนว่าคุณจะมีสิ่งนั้น