[算表] 更新,合并两个条件式却显示错误

楼主: Tampa (光芒)   2016-09-27 16:23:38
软件:excel
版本:2010
各位大大好
我现在有两个条件式
1.
=IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(N2<1000,N2>7000),P2-0.5,P2-1),
IF(OR(N2<1000,N2>7000),2-0.5,2-1)),"")
2.=IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0.5,2-1)),"")
需要把这两个条件式合并为一个
但怎么想就是想不出来= =
可以请各位大大帮忙看一下吗??
我档案编号(N2)有二种条件
1.N2<1000 or N2>7000
2.5999<N2<7000
我自己试写上去,公式如下
=IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(N2<1000,N2>7000,5999<N2<7000),
P2-0.5,P2-1,P2),IF(OR(N2<1000,N2>7000,5999<N2<7000),2-0.5,2-1,2)),"")
但一直显示引数过多 可以帮我看一下吗??
作者: soyoso (我是耀宗)   2016-09-27 16:48:00
二种条件是and,但原文写的是or^^^第二种另外http://imgur.com/a/jH7pR 这方面要以那个false为准呢判断N2介于5999和7000不是5999<N2<7000这样写区间写法规则原po前面已写到and(p2>0,p2<=0)引数过多为if内value_if_true和value_if_false外多了一个引数的关系 http://imgur.com/a/9FBvy
楼主: Tampa (光芒)   2016-09-27 20:32:00
所以我P2要为第三个情况 要另外写一个循环
作者: soyoso (我是耀宗)   2016-09-27 20:34:00
可用为真一个情况,为假时再加另一个判断,加的这个判断就又可以为真或为假。这为判断,不是循环
作者: waiter337 (给开司一罐苏格登)   2016-09-28 11:42:00
其实我建议把一个if做出一直列的辅助列可能会多出7-8个辅助列或者1个辅助列最多放3-4个if的运算最后,如果真的有需求,在合并起来,会比较清楚逻辑运算式中的p直列含意为合?如果算上p2 可能就有超过8种以上条件了或者你档案寄给我啦我调整一下
作者: soyoso (我是耀宗)   2016-09-28 11:54:00
个人觉得原po要清楚的话,就把档案提供到版上要求提供给单一版友那不是很奇怪吗?那还要这个版集思广意干嘛
作者: waiter337 (给开司一罐苏格登)   2016-09-28 13:10:00
你的第二行程式码好像有异常2-1 =IF(OR(N2<7000,N2>5999),2-0.5,2-1)2-2 =IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0.5,2-1))2-3 =IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0.5,2-1)),"")我把你的三层程式码分离解释21- 当n2<7000或>5999 yes=1.5 no=12-2 出问题 当p2介于0~2的话,yes(2-1的结果),no(这里没输入任何公式) ,但要看你的设定,当然也可以只有yes没有no,当然程式也可以跑,但如果你另有所指,就代表这行你少了no的判断2-3当h2=$R$1的话,yes(2-2结果),no(空白值"")结论:当你p2没有在0-2时,你的判断是什么?,如果这里没有任何问题的话,我就可以继续接着处理后续的问题
作者: soyoso (我是耀宗)   2016-09-28 13:20:00
资料编辑列内写的称为"公式",并不是"程式码"也不是"程式"if判断为真为假为true或false,也并不是以yes或no
作者: waiter337 (给开司一罐苏格登)   2016-09-28 13:22:00
感谢楼上IF(OR(N2<1000,N2>7000,5999<N2<7000)y改成IF(or(OR(N2<1000,N2>7000),and(5999<N2,n2<7000)),在范围内的值...998,999,6000,6999,7001,7002....不在范围内的值1000,1001....5998,59997000也不在范围内所以你要求的就是不要在1000~5999的值,还有7000这个值其他都是你要的,这样解释吗?
楼主: Tampa (光芒)   2016-09-28 13:44:00
回w大 当值大于2时,视为等于2
作者: waiter337 (给开司一罐苏格登)   2016-09-28 13:46:00
我会建议你先用辅助列测试一下下面这行=IF(or(OR(N2<1000,N2>7000),and(5999<N2,n2<7000)),1,2)1的话就是在你要的范围内 跳出2就是你不要的范围这个正确的话你就用下面这个公式验证看看=IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(OR(N2<1000,N2>7000),AND(5999<N2,N2<7000)),P2-0.5,P2-1),IF(OR(OR(N2<1000,N2>7000),AND(5999<N2,N2<7000)),2-0.5,2-1)),"")上面全部黏在一起另外你的p值2-2应该改成=IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0,2-1),2)所以p>2时,你想显示2 最后的公式应该是这样=IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(OR(N2额,我先放弃,晚点你在看看
作者: soyoso (我是耀宗)   2016-09-28 14:23:00
如判断值是否为1000~5999及7000,且p2值大于2视为2的话可配合函数min http://imgur.com/a/J9eWn或以 http://imgur.com/gu7jgGL
作者: waiter337 (给开司一罐苏格登)   2016-09-28 15:44:00
另外我要建议你未来架构上,运算表的部份你不要放那么大量的资料跟运算式但这时后有两种方式,一种就是单纯手动贴纯文字到另一个活页簿,一种就是设置VBA让他会依照时间跟排序,点按纽后会将纯文字复制到其他的工作表上这样就不用一次跑7行20000个以上的公式了而且只有纯文字的速度会快很多除非你的公式内的系数设定是会变动的,但说实在的,系数假如会变动的话,也是能另外找个储存格做输入调整,建议调整一下储存资料的架构
作者: soyoso (我是耀宗)   2016-09-28 16:00:00
楼上是在回复这篇吗?那里有放大量的资料和运算式另外公式内的"引数"而不是"系数"http://imgur.com/a/JrxzR
作者: waiter337 (给开司一罐苏格登)   2016-09-28 16:48:00
感谢指点回S大,因为或许我学习的不多,如果比较复杂一点的情况下有整份档案,大致上可以省略许多时间,在猜测问题的问题上,也可以大致上找出原po另外需要但没注意到的部分可以加速学习,而且有些原po的档案有个资或者隐私,不便直接公布是其次,主要可以直接在表单上做测试再回馈给板友经验尤其是怕说 资料量其实很复杂,或许原po在前10%的资料分析上用大家提共的公式没问题,但到了一半原po又才发现有其他的考量没注意到,就还要花时间在解决一次,时间上的花费会比较多,我是以长时间的状况来分析的话拉可以节省s大跟大家的时间对于较简单问题来说,或许当下回复就能解决,但我可能还没那么强还是说s大另有其他的想法一起讨论看看
作者: soyoso (我是耀宗)   2016-09-28 17:16:00
个人无其他想法,您和原po讨论即可
作者: waiter337 (给开司一罐苏格登)   2016-09-28 17:30:00
请s大多加包涵,因为我怕资料有法律上的问题,所以我都不敢随便公布,除非是很简单那种,如果是对方公司资料那类随意公布我怕惹上麻烦,请多见谅
作者: soyoso (我是耀宗)   2016-09-28 21:11:00
只能说如是私信请就不要回15:44~15:48回文,除你们自己知道外,会有其他人知道在回什么意思?
作者: waiter337 (给开司一罐苏格登)   2016-09-28 21:31:00
?什么意思,我前面有想说会很麻烦,直接跟原po要档案来参考阿,不大懂你的需求
作者: soyoso (我是耀宗)   2016-09-28 21:35:00
意思为时间15:44~15:48的回文,应为w大有取得原po的档案因有写到细节,如大量的资料跟运算式、7行20000个以上的公式的回文而这方面的回文应为w大和原po彼此的建议
作者: waiter337 (给开司一罐苏格登)   2016-09-28 22:06:00
喔 以后我会注意我不大晓得这里有这样的规则 抱歉才来这板半个月左右下次我会注意

Links booklink

Contact Us: admin [ a t ] ucptt.com