Office中国论坛/Access中国论坛

标题: 劳烦高人帮我看看此公式为何不行? [打印本页]

作者: eric_wong456    时间: 2007-12-18 22:32
标题: 劳烦高人帮我看看此公式为何不行?
=IF(0<=E23<4000,(E23*0.6-F23-800)*0.2,IF(4000<E23<20000,(E23*0.6-F23)*0.8*0.2,IF(20000<E23<50000,(E23*0.6-F23)*0.3-2000,IF(E23>50000,(E23*0.6-F23)*0.4-7000,,))))

主要想实现的功能:
0~4000之间,用此公式:数a*0.6-数b-800
4000~20000之间,用此公式:(数a*0.6-数b)*0.8*0.2
20000~50000之间,用此公式:(数a*0.6-数b)*0.8*0.3-2000
50000以上,用此公式:(数a*0.6-数b)*0.8*0.4-7000

请高人指点!!谢谢
作者: yh0825    时间: 2007-12-18 23:41
晕死了,我以为是access里的问题呢!
我倒!!!

[ 本帖最后由 yh0825 于 2007-12-19 22:36 编辑 ]
作者: pureshadow    时间: 2007-12-19 01:03
0<=E23<4000
在E里要写成:
and(e23>=0,e23<4000)
类推。

E里用IF,不用IIF。

逻辑关系上有空,4000、20000、50000算在哪头?

虽然有人用IF打遍天下的,但由于IF只能套七层,所以这类问题建议还是用VLOOKUP的模糊查找函数:
加辅助列A1:A4分别为0、4000、20000、50000,B1:B4分别为对应的计算公式,函数为:
=vlookup(e23,辅助列!a:b,2)
作者: tmtony    时间: 2007-12-19 10:13
简单的多条件也可试试 Switch

Function MatchUp (CityName As String)
    Matchup = Switch(CityName = "London", "English", CityName _
                    = "Rome", "Italian", CityName = "Paris", "French")
End Function
作者: yh0825    时间: 2007-12-19 22:51
=IF(E23<=4000,(E23*0.6-F23-800)*0.2,IF(E23<=20000,(E23*0.6-F23)*0.8*0.2,IF(E23<=50000,(E23*0.6-F23)*0.3-2000,IF(E23>=50000,(E23*0.6-F23)*0.4-7000))))
这样试试吧,关键是0~4000之间不一定就要用0<=E23<4000来体现

不过又学了一招:  0<=E23<4000  要写成:and(e23>=0,e23<4000)


有一个问题:如果e23小于0的话,有没有公式,如果有的话,做相应修改就行了

另:pureshadow版主的方法为高级方法,俺硬是没搞成功,不知道具体如何操作的,

俺这个是小儿科的办法,嘿嘿!

[ 本帖最后由 yh0825 于 2007-12-19 23:14 编辑 ]
作者: pureshadow    时间: 2007-12-20 00:00
小于0可以再套一层IF
那个VLOOKUP的做法如附件,把ABCD换成你需要的四则运算就可以了。

[ 本帖最后由 pureshadow 于 2007-12-20 00:01 编辑 ]
作者: yh0825    时间: 2007-12-21 22:41
pureshadow版主做的附件我看了,受益匪浅!
但有一个问题,就是,按版主所述,我将D换成公式:=A3*0.6*0.4-7000
然后在A3输入5000001,可以在B3出来所要结果,但是如果我想在A4、A5、A6……输入不同的数据(均大于50000),然后相应的在B4、B5、B6……得到结果(A4*0.6*0.4-7000、A5*0.6*0.4-7000、A6*0.6*0.4-7000……),不知又如何操作呢?因为公式不对了呀!
作者: pureshadow    时间: 2007-12-22 13:10
把F2:G5改成F:G,或者$f$2: $g$5

[ 本帖最后由 pureshadow 于 2007-12-22 13:12 编辑 ]
作者: yh0825    时间: 2007-12-30 14:43
呵呵,因为我没说清楚,所以版主还是没理解我的意思,
我将版主例子中的G2 单元格内容:“D”,换成公式:“=A3*0.6*0.4+10”
B3单元格为:=LOOKUP(A3,$F$2:F$5,$G$2:G$5)
B4单元格为:=LOOKUP(A4,$F$2:F$5,$G$2:G$5)
然后我在A3单元格输入5,则B3 单元格的值显示为:11.2
     当我在A4单元格输入200时,B3 单元格的值仍显示为:11.2。我想要的结果是:58(即A4*0.6*0.4+10)
不知如何实现?

[ 本帖最后由 yh0825 于 2007-12-30 14:48 编辑 ]
作者: yh0825    时间: 2008-1-7 00:16
顶一下!
有劳各位了
作者: virster    时间: 2008-1-8 13:23
多谢,学到东西了。




欢迎光临 Office中国论坛/Access中国论坛 (http://www.office-cn.net/) Powered by Discuz! X3.3