[算表] 更新,合併兩個條件式卻顯示錯誤

作者: 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