Excel,IF函数运用过程中出现问题,提示您已为此函数输入太多个参数,是否括号有问题?
=(B23-LOOKUP(B23,{0;50000;100000;150000;200000;250000;350000;500000;1000000;2000000;3000000},{0;50000;100000;150000;200000;250000;350000;500000;1000000;2000000;3000000}))*LOOKUP(B23,{0;50000;100000;150000;200000;250000;350000;500000;1000000;2000000;3000000},{1.1;1;0.9;0.8;0.7;0.6;0.5;0.4;0.3;0.2;0.1})+LOOKUP(B23,{0;50000;100000;150000;200000;250000;350000;500000;1000000;2000000;3000000},{0;55000;105000;150000;190000;225000;285000;360000;559999.999999999;859999.999999998;1060000})
用这个公式吧,其中的区域被我换算了。也可以有这样一个区域,公式可以看上去简单很多:
=(B23-LOOKUP(B23,H25:H35,H25:H35))*LOOKUP(B23,H25:H35,I25:I35)+LOOKUP(B23,H25:H35,J25:J35)
if 最多可以嵌套 64 个 if。尽管如此,在写公式过程中,尽量少嵌套 if;一方面便于阅读与修改,另一方面执行效率也高一些。
你可以把它拆分成几个IF函数。
像这类只有一个单元格数值做判断依据的,重复嵌套IF函数效率很低,而且容易出错
建议改用CHOOSE函数,
=CHOOSE(CEILING(B23/50000,1),B23*1.1,50000*1.1+(B23-50000)*1,50000*1.1+50000*1+(B23-100000)*0.9,后续操作自行复制),即用B23和50000的倍数向上四舍五入取整,判断用后面哪个公式计算
刚看到你公式里不都是顺序50000递增的,公式要稍微做修改,其中的CEILING(B23/50000,1)
改为LOOKUP(CEILING(B23/50000,1),{1,2,3,5,7,10,20,40,60,61},{1,2,3,4,5,6,7,8,9,10})即可