找回密码
 立即注册

QQ登录

只需一步,快速开始

扫一扫,访问微社区

查看: 661|回复: 13

[求助]:if函数嵌套7层的限制出错

[复制链接]
发表于 2004-10-23 19:55:29 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?立即注册

×
各位高手,我在做一个计算书时,要用到一个IF函数超过七层,按照网上的办法出错,请各位高手指点错在那?正确的公式应如何列?具体数据如下:
源数据
3.0及以下        0.223
3.5                0.217
4                0.21
4.5                0.204
5                0.197
5.5                0.183
6                0.159
6.5                0.13
7                0.091
7.5及以上        0.081


公式如下:
=IF(F19<3.00001,0.223,IF(F19<3.5000001,(0.217+(0.223-0.217)*(3.5-F19)/0.5),IF(F19<4.00001,(0.21+(0.217-0.21)*(4-F19)/0.5),IF(F19<4.500001,(0.204+(0.21-0.204)*(4.5-F19)/0.5),IF(F19<5.00001,(0.197+(0.204-0.197)*(5-F19)/0.5),IF(F19<5.500001,(0.183+(0.197-0.183)*(5.5-F19)/0.5),IF(F19<6.00001,(0.159+(0.183-0.159)*(6-F19)/0.5),))))))) & IF(6<F19<6.500001,(0.13+(0.159-0.13)*(6.5-F19)/0.5),IF(6.5<F19<7,(0.091+(0.13-0.091)*(7-F19)/0.5),IF(7<F19<7.499999,(0.081+(7.5-F19)/0.5),0.081)))

数据结果有2个··,请各位高手指点错在那?不胜感谢!!!!!!!!!!
19, 0.5, IF
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
发表于 2004-10-23 22:30:50 | 显示全部楼层
看来你用execl的时间不长,在公式里<=可以表示小于等于,你的公式我给你改了一下,正确的应该如下:=IF(F19<=3,0.223,IF(F19<=3.5,(0.217+(0.223-0.217)*(3.5-F19)/0.5),IF(F19<=4,(0.21+(0.217-0.21)*(4-F19)/0.5),IF(F19<=4.5,(0.204+(0.21-0.204)*(4.5-F19)/0.5),IF(F19<=5,(0.197+(0.204-0.197)*(5-F19)/0.5),IF(F19<=5.5,(0.183+(0.197-0.183)*(5.5-F19)/0.5),IF(F19<=6,(0.159+(0.183-0.159)*(6-F19)/0.5),)))))))&IF(F19<=6,"",IF(F19<=6.5,(0.13+(0.159-0.13)*(6.5-F19)/0.5),IF(F19<=7,(0.091+(0.13-0.91)*(7-F19)/0.5),IF(F19<=7.5,(0.081+(0.91-0.81)*(7.5-F19)/0.5),0.081))))
我估计是因为你设置的计算结果保留了几个小数位,所以才会出现上面的问题,你看我最后修改的公式,我认为不会再有错了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-23 23:54:23 | 显示全部楼层
感谢二楼的帮助,但是还是不行,问题不是出在<=符号上,而是用了&符号后,上面的公式将&前后两段的公式同时进行计算并将结果合在一起出现了数据中出现两个小数点的错误。感觉上好象是逻辑错误,但具体错在那我也搞不清楚,还请高手指点为感!!!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-24 10:03:45 | 显示全部楼层
你试试这个::=IF(F19<=3,0.223,IF(F19<=3.5,(0.217+(0.223-0.217)*(3.5-F19)/0.5),IF(F19<=4,(0.21+(0.217-0.21)*(4-F19)/0.5),IF(F19<=4.5,(0.204+(0.21-0.204)*(4.5-F19)/0.5),IF(F19<=5,(0.197+(0.204-0.197)*(5-F19)/0.5),IF(F19<=5.5,(0.183+(0.197-0.183)*(5.5-F19)/0.5),IF(F19<=6,(0.159+(0.183-0.159)*(6-F19)/0.5),"")))))))&IF(F19<=6,"",IF(F19<=6.5,(0.13+(0.159-0.13)*(6.5-F19)/0.5),IF(F19<=7,(0.091+(0.13-0.91)*(7-F19)/0.5),IF(F19<=7.5,(0.081+(0.91-0.81)*(7.5-F19)/0.5),0.081))))或者::=IF(F19<=3,0.223,IF(F19<=3.5,(0.217+(0.223-0.217)*(3.5-F19)/0.5),IF(F19<=4,(0.21+(0.217-0.21)*(4-F19)/0.5),IF(F19<=4.5,(0.204+(0.21-0.204)*(4.5-F19)/0.5),IF(F19<=5,(0.197+(0.204-0.197)*(5-F19)/0.5),IF(F19<=5.5,(0.183+(0.197-0.183)*(5.5-F19)/0.5),IF(F19<=6,(0.159+(0.183-0.159)*(6-F19)/0.5),0)))))))+IF(F19<=6,0,IF(F19<=6.5,(0.13+(0.159-0.13)*(6.5-F19)/0.5),IF(F19<=7,(0.091+(0.13-0.91)*(7-F19)/0.5),IF(F19<=7.5,(0.081+(0.91-0.81)*(7.5-F19)/0.5),0.081))))这样应该不会有错了!这个公式太繁了,没意思!你是在作预算吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-25 20:05:16 | 显示全部楼层
感谢sgsldz !!!!!世界因你更温暖!!!!!!!!!!!
*-*1 *-*1 *-*1 *-*1 *-*1 *-*1 *-*1 *-*1
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-26 08:37:04 | 显示全部楼层
问题解决了吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-26 11:14:28 | 显示全部楼层
使用IF函数嵌套应用判断多条件取值一直是让各位头疼不已的问题,不仅公式繁琐可读性差,而且还有嵌套最大7层的限制。可以考虑改为如下公式:
虽然公式仍然比较长,但已经比较容易理解了,而且还可以继续扩展更多的判定条件。与IF嵌套判定的方法相比,这个公式更便于记忆。
[PHP]=0.223*(F19<3)+0.217*(AND(3<F19,F19<=3.5))+0.21*(AND(3.5<F19,F19<=4))+0.204*(AND(4<F19,F19<=4.5))+0.197*(AND(4.5<F19,F19<=5))+0.183*(AND(5<F19,F19<=5.5))+0.159*(AND(5.5<F19,F19<6))+0.13*(AND(6<F19,F19<=6.5))+0.091*(AND(6.5<F19,F19<=7))+0.081*(7<F19)[/PHP]
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-27 00:25:45 | 显示全部楼层
最初由 yi.gao 发布
[B]使用IF函数嵌套应用判断多条件取值一直是让各位头疼不已的问题,不仅公式繁琐可读性差,而且还有嵌套最大7层的限制。可以考虑改为如下公式:
虽然公式仍然比较长,但已经比较容易理解了,而且还可以继续扩展更多的?.. [/B]

你的方法的确很好,但是的在计算中选择的是内插计算,不是单纯的选择一个数值,虽然这样,对我的启发也很大!谢谢!
差点忘了,PHP代码是什么东西,能简单介绍一下吗?
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-27 13:22:37 | 显示全部楼层
最初由 sgsldz 发布
[B][QUOTE]最初由 yi.gao 发布
[B]使用IF函数嵌套应用判断多条件取值一直是让各位头疼不已的问题,不仅公式繁琐可读性差,而且还有嵌套最大7层的限制。可以考虑改为如下公式:
虽然公式仍然比较长,但已经比较... [/B]


我贴长公式贴不上来,不知道为什么,所以用了PHP代码,这样就可以显示完整公式了。没有什么特别含义。
你的问题能详述一下吗?因为我不做这个,不知道你内插计算是怎么回事。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

 楼主| 发表于 2004-10-29 11:54:22 | 显示全部楼层
感谢 sgsldz 、黄金长老的热心帮助,问题已解决。但又出了一个新问题,按公式计算出来的数值小数点后有七八位之多,在单元格属性中改为数字,尾数保留4位,但没有效果,仍显示七八位。再请两位高手给予指点为感!!!!




*-*4 *-*4 *-*4 *-*4 *-*4 *-*4 *-*4
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-29 11:55:56 | 显示全部楼层
最好把你的文件贴上来,我很难创造出你得到的结果,理论上不应该这样的。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-29 21:25:41 | 显示全部楼层
我是说你没有看清楚他的公式的意思,它除了最小的一个值外,其他的值不是一个简单的得数,还要另外计算!
还有,你用我的第二个绝对不会出现你的那种情况!第一个由于它相当于文本格式,所以会出现问题!但是用它的结果计算后再设置就没问题了,建议你把这列隐藏,,然后插入一列,差如这列的结果就是你隐藏的那列数值加0,的计算结果,然后就绝对没有问题了!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-10-30 13:42:47 | 显示全部楼层
一楼的是不是路基路面组的兄弟呀,这是不是计算拱形骨架防护数量用的,如果是的话我建议你将高度河数量做成一个表,以后改一下后面的表就可以了。
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

发表于 2004-11-22 13:02:36 | 显示全部楼层
sgsldz的公式太繁了,还是yigao长老的公式简洁,我喜欢yigao长老的公式!
论坛插件加载方法
发帖求助前要善用【论坛搜索】功能,那里可能会有你要找的答案;
如果你在论坛求助问题,并且已经从坛友或者管理的回复中解决了问题,请把帖子标题加上【已解决】;
如何回报帮助你解决问题的坛友,一个好办法就是给对方加【D豆】,加分不会扣除自己的积分,做一个热心并受欢迎的人!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|申请友链|Archiver|手机版|小黑屋|辽公网安备|晓东CAD家园 ( 辽ICP备15016793号 )

GMT+8, 2024-11-26 00:29 , Processed in 0.368315 second(s), 57 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

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