看板 Office 關於我們 聯絡資訊
軟體: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)),"") 但一直顯示引數過多 可以幫我看一下嗎?? -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.242.252 ※ 文章網址: https://www.ptt.cc/bbs/Office/M.1474964621.A.289.html
soyoso: 二種條件是and,但原文寫的是or 09/27 16:48
soyoso: ^^^第二種 09/27 16:48
soyoso: 另外http://imgur.com/a/jH7pR 這方面要以那個false為準呢 09/27 16:55
※ 編輯: Tampa (1.160.242.252), 09/27/2016 18:30:32 ※ 編輯: Tampa (1.160.242.252), 09/27/2016 18:31:23
soyoso: 判斷N2介於5999和7000不是5999<N2<7000這樣寫 09/27 18:43
soyoso: 區間寫法規則原po前面已寫到and(p2>0,p2<=0) 09/27 18:45
soyoso: 引數過多為if內value_if_true和value_if_false外多了一個 09/27 18:56
soyoso: 引數的關係 http://imgur.com/a/9FBvy 09/27 18:56
Tampa: 所以我P2要為第三個情況 要另外寫一個迴圈 09/27 20:32
soyoso: 可用為真一個情況,為假時再加另一個判斷,加的這個判斷就 09/27 20:34
soyoso: 又可以為真或為假。這為判斷,不是迴圈 09/27 20:35
waiter337: 其實我建議把一個if做出一直列的輔助列 09/28 11:42
waiter337: 可能會多出7-8個輔助列 09/28 11:43
waiter337: 或者1個輔助列最多放3-4個if的運算 09/28 11:44
waiter337: 最後,如果真的有需求,在合併起來,會比較清楚邏輯 09/28 11:44
waiter337: 運算式中的p直列含意為合? 09/28 11:47
waiter337: 如果算上p2 可能就有超過8種以上條件了 09/28 11:48
waiter337: 或者你檔案寄給我啦 09/28 11:48
waiter337: 我調整一下 09/28 11:48
soyoso: 個人覺得原po要清楚的話,就把檔案提供到版上 09/28 11:54
soyoso: 要求提供給單一版友那不是很奇怪嗎?那還要這個版集思廣意 09/28 11:55
soyoso: 幹嘛 09/28 11:55
waiter337: 你的第二行程式碼好像有異常 09/28 13:10
waiter337: 2-1 =IF(OR(N2<7000,N2>5999),2-0.5,2-1) 09/28 13:10
waiter337: 2-2 =IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0. 09/28 13:11
waiter337: 5,2-1)) 09/28 13:11
waiter337: 2-3 =IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2 09/28 13:12
waiter337: >5999),2-0.5,2-1)),"") 09/28 13:12
waiter337: 我把你的三層程式碼分離解釋 09/28 13:12
waiter337: 21- 當n2<7000或>5999 yes=1.5 no=1 09/28 13:13
waiter337: 2-2 出問題 當p2介於0~2的話,yes(2-1的結果),no(這裡沒 09/28 13:14
waiter337: 輸入任何公式) ,但要看你的設定,當然也可以只有yes沒有 09/28 13:16
waiter337: no,當然程式也可以跑,但如果你另有所指,就代表這行你少 09/28 13:16
waiter337: 了no的判斷 09/28 13:16
waiter337: 2-3當h2=$R$1的話,yes(2-2結果),no(空白值"") 09/28 13:18
waiter337: 結論:當你p2沒有在0-2時,你的判斷是什麼?,如果這裡沒有 09/28 13:19
waiter337: 任何問題的話,我就可以繼續接著處理後續的問題 09/28 13:19
soyoso: 資料編輯列內寫的稱為"公式",並不是"程式碼"也不是"程式" 09/28 13:20
soyoso: if判斷為真為假為true或false,也並不是以yes或no 09/28 13:22
waiter337: 感謝樓上 09/28 13:22
waiter337: IF(OR(N2<1000,N2>7000,5999<N2<7000)y 09/28 13:28
waiter337: 改成 09/28 13:29
waiter337: IF(or(OR(N2<1000,N2>7000),and(5999<N2,n2<7000)), 09/28 13:37
waiter337: 在範圍內的值...998,999,6000,6999,7001,7002.... 09/28 13:40
waiter337: 不在範圍內的值1000,1001....5998,5999 09/28 13:41
waiter337: 7000 09/28 13:41
waiter337: 也不在範圍內 09/28 13:41
waiter337: 所以你要求的就是不要在1000~5999的值,還有7000這個值 09/28 13:42
waiter337: 其他都是你要的,這樣解釋嗎? 09/28 13:42
Tampa: 回w大 當值大於2時,視為等於2 09/28 13:44
waiter337: 我會建議你先用輔助列測試一下下面這行 09/28 13:46
waiter337: =IF(or(OR(N2<1000,N2>7000),and(5999<N2,n2<7000)),1, 09/28 13:46
waiter337: 2) 09/28 13:46
waiter337: 1的話就是在你要的範圍內 跳出2就是你不要的範圍 09/28 13:47
waiter337: 這個正確的話 09/28 13:47
waiter337: 你就用下面這個公式驗證看看 09/28 13:47
waiter337: =IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(OR(N2 09/28 13:48
waiter337: <1000,N2>7000),AND(5999<N2,N2<7000)),P2-0.5,P2-1) 09/28 13:48
waiter337: ,IF(OR(OR(N2<1000,N2>7000),AND 09/28 13:48
waiter337: (5999<N2,N2<7000)),2-0.5,2-1)),"") 09/28 13:49
waiter337: 上面全部黏在一起 09/28 13:49
waiter337: 另外你的p值2-2應該改成 09/28 13:52
waiter337: =IF(AND(P2>0,P2<=2),IF(OR(N2<7000,N2>5999),2-0,2-1) 09/28 13:53
waiter337: ,2) 09/28 13:53
waiter337: 所以p>2時,你想顯示2 最後的公式應該是這樣 09/28 13:56
waiter337: =IF(H2=$R$1,IF(AND(P2>0,P2<=2),IF(OR(OR(N2 09/28 13:56
waiter337: 額,我先放棄,晚點你在看看 09/28 13:56
soyoso: 如判斷值是否為1000~5999及7000,且p2值大於2視為2的話 09/28 14:23
soyoso: 可配合函數min http://imgur.com/a/J9eWn 09/28 14:25
soyoso: 或以 http://imgur.com/gu7jgGL 09/28 14:34
waiter337: 另外我要建議你未來架構上,運算表的部份 09/28 15:44
waiter337: 你不要放那麼大量的資料跟運算式 09/28 15:44
waiter337: 但這時後有兩種方式,一種就是單純手動貼純文字到另一個 09/28 15:45
waiter337: 活頁簿,一種就是設置VBA讓他會依照時間跟排序,點按紐後 09/28 15:45
waiter337: 會將純文字複製到其他的工作表上 09/28 15:46
waiter337: 這樣就不用一次跑7行20000個以上的公式了 09/28 15:46
waiter337: 而且只有純文字的速度會快很多 09/28 15:46
waiter337: 除非你的公式內的係數設定是會變動的,但說實在的,係數 09/28 15:47
waiter337: 假如會變動的話,也是能另外找個儲存格做輸入調整,建議 09/28 15:48
waiter337: 調整一下儲存資料的架構 09/28 15:48
soyoso: 樓上是在回覆這篇嗎?那裡有放大量的資料和運算式 09/28 16:00
soyoso: 另外公式內的"引數"而不是"係數" 09/28 16:20
soyoso: http://imgur.com/a/JrxzR 09/28 16:20
waiter337: 感謝指點 09/28 16:48
waiter337: 回S大,因為或許我學習的不多,如果比較複雜一點的情況下 09/28 17:03
waiter337: 有整份檔案,大致上可以省略許多時間,在猜測問題的問題 09/28 17:03
waiter337: 上,也可以大致上找出原po另外需要但沒注意到的部分 09/28 17:03
waiter337: 可以加速學習,而且有些原po的檔案有個資或者隱私,不便 09/28 17:04
waiter337: 直接公布是其次,主要可以直接在表單上做測試再回饋給板 09/28 17:04
waiter337: 友經驗 09/28 17:04
waiter337: 尤其是怕說 資料量其實很複雜,或許原po在前10%的資料分 09/28 17:10
waiter337: 析上用大家提共的公式沒問題,但到了一半原po又才發現有 09/28 17:11
waiter337: 其他的考量沒注意到,就還要花時間在解決一次,時間上的 09/28 17:12
waiter337: 花費會比較多,我是以長時間的狀況來分析的話拉 09/28 17:12
waiter337: 可以節省s大跟大家的時間 09/28 17:13
waiter337: 對於較簡單問題來說,或許當下回復就能解決,但我可能還 09/28 17:14
waiter337: 沒那麼強 09/28 17:14
waiter337: 還是說s大另有其他的想法一起討論看看 09/28 17:15
soyoso: 個人無其他想法,您和原po討論即可 09/28 17:16
waiter337: 請s大多加包涵,因為我怕資料有法律上的問題,所以我都不 09/28 17:30
waiter337: 敢隨便公布,除非是很簡單那種,如果是對方公司資料那類 09/28 17:30
waiter337: 隨意公布我怕惹上麻煩,請多見諒 09/28 17:30
soyoso: 只能說如是私信請就不要回15:44~15:48回文,除你們自己知 09/28 21:11
soyoso: 道外,會有其他人知道在回什麼意思? 09/28 21:12
waiter337: ?甚麼意思,我前面有想說會很麻煩,直接跟原po要檔案來 09/28 21:31
waiter337: 參考阿,不大懂你的需求 09/28 21:31
soyoso: 意思為時間15:44~15:48的回文,應為w大有取得原po的檔案 09/28 21:35
soyoso: 因有寫到細節,如大量的資料跟運算式、7行20000個以上的公 09/28 21:36
soyoso: 式的回文 09/28 21:36
soyoso: 而這方面的回文應為w大和原po彼此的建議 09/28 21:38
waiter337: 喔 以後我會注意 09/28 22:06
waiter337: 我不大曉得這裡有這樣的規則 抱歉才來這板半個月左右 09/28 22:08
waiter337: 下次我會注意 09/28 22:09