Excel50+分求助!高手来!

来源:百度知道 编辑:UC知道 时间:2024/06/28 07:22:39
要求是根据发货地、收货地的变化选择费率表.

有甲乙丙丁四种费率表针对不同的情形,单独写我都会写,但是放在一起太复杂,我就不会了:

--------------------------------------------------------------------
若B2=C2=”IQ” 或”AF”, 则使用甲费率表,则E2=IF(D2=0,"0",IF(D2<16,"4.956",IF(D2<51,"3.717",IF(D2<300,"3.098",IF(D2>=300,"2.478","?")))))

若B2与C2中有且只有一个等于”IQ”或”AF”,则使用乙费率表,则E2=IF(D2=0,"0",IF(D2<25,"3.407",IF(D2<100,"2.555", IF(D2<300,"2.168", IF(D2<500,"1.936",IF(D2>=500,"1.626","?"))))))

若B2=”QATAR”且C2不等于”AF”或”IQ”,则使用丙费率表,则E2=(表达式太复杂,不贴了.)

若B2=”Kuwait”且C2不等于”AF”或”IQ”, 则使用丙费率表,则E2=(表达式太复杂,也不贴了.)
-----------------------------------------------------------------

把这四种情况都考虑在内,请问E2的表达式应该怎么写?
你们不用根据我的思路来,完全可以使用新的函数关系式啊!只要能够把我需要的逻辑目的达到就可以了!

=if(and(or(b2="IQ",b2="AF"),or(c2="IQ",c2="AF")),费率甲,if(or(b2="IQ",b2="AF",c2="IQ",c2="AF"),费率乙,if(b2="QATAR",费率丙,if(b2="Kuwait",费率丁,"?"))))
IF公式受嵌套层数影响,因此费率甲的公式改为 Lookup(D2,{0,0.01,16,51,300},{0,4.956,3.717,3.098,2.478})
注意如果你的D2只是整数的话,上面0.01可用1代替
费用乙的公式按相同方法修改.

看情况这个公式一次性是写不出来的,因为if函数最多只能嵌套7层,

你可以把每种费率计算方法的公式现在其他单元格分列写出来,然后在e2用if根据条件引用就可以了

要不就用vba自定义一个函数吧