ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1242|回复: 9

[求助] 求助!if函数多重计算结果错误,不知道如何修改!

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:07 | 显示全部楼层 |阅读模式
计算应纳税额,
  1、利润额小于等于100万,应纳税额按利润额的5%计取
  2、利润额大于100万小于等于300万,应纳税额按100万的5%+大于100万部分的10%计取
  3、利润额大于300万的,应纳税额按利润额的25%计取
  输入公式:=IF(C2>3000000,C2*0.25,IF(3000000>=C2>1000000,(1000000*0.05+(C2-1000000)*0.1),IF(1000000>=C2,C2*0.05)))
问题:计算结果小于100万部分是错误的,如图,不知道计算公式的错误点在哪里,应该如何修改,希望各位老师帮忙指点!!感谢!!!
  
001.png

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:11 | 显示全部楼层
试试将小于1000000的改为:if(and(c2<1000000,c2>=0),c2*0.05)

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:11 | 显示全部楼层
IF(3000000>=C2>1000000,这种写法错误
if(and(c2>1000000,c2<=3000000),

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-27 13:16 | 显示全部楼层
meilun006 发表于 2020-2-27 13:11
试试将小于1000000的改为:if(and(c2=0),c2*0.05)

谢谢您,修改成功了,感谢!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-27 13:17 | 显示全部楼层
lfspecter 发表于 2020-2-27 13:11
IF(3000000>=C2>1000000,这种写法错误
if(and(c2>1000000,c2

谢谢您,又学到了一些,万分感谢!!

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:21 | 显示全部楼层
=IF(C2>3000000,C2*0.25,IF(C2>1000000,(1000000*0.05+(C2-1000000)*0.1),C2*0.05))

TA的精华主题

TA的得分主题

发表于 2020-2-27 13:23 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=if(c2%%%<=1,c2/20,if(c2%%%<=3,c2/10-50000,c2/4))

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-27 13:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
totorohong 发表于 2020-2-27 13:21
=IF(C2>3000000,C2*0.25,IF(C2>1000000,(1000000*0.05+(C2-1000000)*0.1),C2*0.05))

感谢您,又学到了另一种方法,谢谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-2-27 13:33 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-2-27 15:01 | 显示全部楼层
IF函数是从左向右依次计算的,所以:
1,在你公式的基础上修改的话,你要在判定大于100万且小于等于300万时,加上AND函数,
=IF(C2>3000000,C2*0.25,IF(AND(3000000>=C2,C2>1000000),1000000*0.05+(C2-1000000)*0.1,IF(1000000>=C2,C2*0.05)))
{你原来的公式在函数运行时,利润为10万的例子上,第一层判定不成立,会进入第二层函数IF(3000000>=C2>1000000,...的这个判定,因为C2是10万,所以函数会运行到IF(3000000>=1000000>1000000,...,从左向右依次计算,会变成IF(TRUE>1000000,...   然后TRUE>1000000会被判定为TRUE,所以,函数会在运行到第二层时就结束,得出-40000的结果}
2,如果按照你列出的条件的逻辑顺序写公式,则不需要加AND函数,如下
=IF(1000000>=C2,C2*0.05,IF(3000000>=C2,1000000*0.05+(C2-1000000)*0.1,IF(C2>3000000,C2*0.25)))
这种逻辑顺序则是前一层会给后一层一个严谨的消除范围判定,
非黑即白的层层递进,就不会出错了,(公式可进一步简化,或者逻辑顺序改变后,就是楼上给出的一些公式),但大运则要记住IF函数是从左向右依次进行运算出结果的,如果符合了哪一层,就不再运行更右侧的信息了。
一点拙见
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-25 21:52 , Processed in 0.038214 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表