Board logo

標題: [發問] IF的困擾 [打印本頁]

作者: PJChen    時間: 2013-5-7 23:00     標題: IF的困擾

IF是一個我個人很常使用的函數,但往往用IF時,感覺公式都寫得很長,不知是否有替代函數?或者有省略的寫法?
例如以下公式,意思是當答案大於5時,顯示為5,否則就用原算式,
Q1249=IF(IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249)>5,5,IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249))
作者: p212    時間: 2013-5-8 08:40

本帖最後由 p212 於 2013-5-8 08:43 編輯

回復 1# PJChen

Q1249=IF(IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249)>5,5,IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249))

去除刪除線部份修改為  Q1249=IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249)  即可,請參考!
作者: p212    時間: 2013-5-8 09:11

回復 1# PJChen

Sorry! 未看清您的需求,上列(2#)的意見請忽略。
作者: ML089    時間: 2013-5-8 09:57

=--TEXT(5/IF(AND(N1249<N1250,N1250>0),N1248,N1248)*N1249,"[>5]5")
作者: PJChen    時間: 2013-5-8 11:57

回復 4# ML089

請教TEXT不是用在文字方面的函數,為何會使用它? "[>5]5")的意思又何解?
=--TEXT(5/IF(AND(N1249<N1250,N1250>0),N1248,N1248)*N1249,"[>5]5")
作者: ML089    時間: 2013-5-8 13:36

回復 5# PJChen


    "[>5]5")的意思又何解?
大於5的數全部為5,其他不變
作者: p212    時間: 2013-5-8 16:13

本帖最後由 p212 於 2013-5-8 16:15 編輯

回復 6# ML089
Mr. ML089:您好!
"[>5]5":表示大於5的數全部為5,其他不變。
上述概念之應用可從Excel的說明檔獲得詳細解說?
可否煩請指點迷津,提供非資訊背景出身之同好學習,謝謝!
作者: ML089    時間: 2013-5-8 18:39

回復 7# p212
回復 5# PJChen
"[>5]5":表示大於5的數全部為5,其他不變。
上述概念之應用可從Excel的說明檔獲得詳細解說?

回覆:   
Excel的說明檔沒有此說明,但可以參考 儲存格格式設定中的 - 特殊 - 電話類 有類似做法可以參考。
晚上回家我再找一些資料給大家參考

先參考 儲存格格式設定中的 - 特殊
[attach]14924[/attach]
作者: ML089    時間: 2013-5-8 19:37

本帖最後由 ML089 於 2013-5-8 23:54 編輯

[條件值]        設置條件格式                                       
                                               
        顯示值        自訂格式代碼                原始值               
        2875 8965        [>99999999](0###) #### ####;#### ####                28758965               
        (021) 2345 9821        [>99999999](0###) #### ####;#### ####                2123459821               
        (0755) 2345 9821        [>99999999](0###) #### ####;#### ####                75523459821               
        99        [>100][紅色]0;[藍色]0                99               
        105        [>100][紅色]0;[藍色]0                105               
        123.40        [>100][綠色]#,##0.00;[<100][紅色]#,##0.00                123.4               
        87.00        [>100][綠色]#,##0.00;[<100][紅色]#,##0.00                87

EXCEL 表格貼上來有點亂,再補充圖形於下
使用TEXT函數格式文本時,其第二個參數的格式代碼,除了各個顏色代碼外,其他的與上表基本相同
[attach]14930[/attach]
作者: PJChen    時間: 2013-5-8 21:29

回復 9# ML089

感謝!!學到了以前所未接觸的,真太妙了!!
作者: ML089    時間: 2013-5-10 12:38

回復 1# PJChen
回復 2# p212

隨著每天心情不同,看法也會不同

上次用 TEXT ,現在看起來覺的用得不好,這是純數學比較問題卻用過濾方法來處理,數字轉文字再轉數字多少有精度問題,速度也影響很大

題目是 計算值大於5就取5,用 MIN(5,計算值) 簡單的數學比較就能處理。

原式
Q1249
=IF(IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249)>5,5,IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249))

用MIN()就能縮減
=MIN(5,IF(AND(N1249<N1250,N1250>0),5/N1250*N1249,5/N1248*N1249))

計算式結構修改也能簡短
=MIN(5,5/IF(AND(N1249<N1250,N1250>0),N1248,N1248)*N1249)
作者: Bodhidharma    時間: 2013-5-10 13:16

回復 12# ML089

嗯,用min是個好方法!

是說我最近也遇到類似的問題:
if(一長串算式=0,"",一長串算式)
或是
if((一長串算式=0)+(一長串算式>另一長串算式),"",一長串算式)
這個除了用定義名稱外,有省略的寫法嗎?

note:
一長串算式:INDEX('1020514全名冊'!A:A,MATCH(ROUNDUP((ROW()-2)/31,0)*3-2,'1020514全名冊'!A:A,0)+MOD(ROW()-3,31))
另一長串算式:ROUNDUP((ROW()-2)/31,0)*3
作者: Bodhidharma    時間: 2013-5-10 13:32

回復 13# Bodhidharma

if(一長串算式=0,"",一長串算式)
或是
if((一長串算式=0)+(一長串算式>另一長串算式),"",一長串算式)

稍微研究了一下,似乎可以用
text(一長串算式,"[=0] ")
以及
text(一長串算式,"[=0] ;[>另一長串算式] "
的方式處理,不過這理的空格是" ",與""有一點差距
請問text要如何回傳""呢?
作者: Bodhidharma    時間: 2013-5-10 13:49

回復 14# Bodhidharma

text的format_text語法似乎很好用,不過找不到教學文件…
text(value,[條件一]格式一;[條件二]格式二...)
似乎是用select case的邏輯在進行的,當符合第n個條件時,就用該格式,然後就跳出此函數
想請教如果要同時符合兩個條件,要如何設定?(用[條件一][條件二]似乎不行…)
作者: ML089    時間: 2013-5-10 16:10

回復 14# Bodhidharma
>if(一長串算式=0,"",一長串算式)
>或是
>if((一長串算式=0)+(一長串算式>另一長串算式),"",一長串算式)
>
>稍微研究了一下,似乎可以用
>text(一長串算式,"[=0] ")
>以及
>text(一長串算式,"[=0] ;[>另一長串算式] "
>的方式處理,不過這理的空格是" ",與""有一點差距
>請問text要如何回傳""呢?

可以用 TEXT(一長串算式,"[<>];;;")
0 回傳為 "",其他依原值回傳,數字仍為 文字格式,使用上仍需注意
作者: ML089    時間: 2013-5-10 16:20

回復 15# Bodhidharma
>text的format_text語法似乎很好用,不過找不到教學文件…
>text(value,[條件一]格式一;[條件二]格式二...)
>似乎是用select case的邏輯在進行的,當符合第n個條件時,就用該格式,然後就跳出此函數
>想請教如果要同時符合兩個條件,要如何設定?(用[條件一][條件二]似乎不行…)

TEXT 條件只能設定3個,2個可以指定,其他就是第3個
例如
=TEXT(A1,"[>10]!A;[>5]!B;!C")
大於10顯示為 "A"
5 - 10顯示為 "B"
其他顯示 "C"
作者: PJChen    時間: 2013-5-10 23:40

回復 17# ML089

我原想將新學到的式子套進Q2當中,但公式中太多if,就套不出來了,不知以下公式出現很多if時,是否可用其 他函數?

Q2=IF($G2="","",ROUND(IF(IF(E2=0,0,IF(F2<=$AA$2,5/$Z$2*N2,IF(AND(F2>$AA$2,N1=0,N2>$X$2,N2<N3,N3>0),5/N3*N2,IF(AND(F2>$AA$2,N1>0,N2>$X$2,N2>N3,N3=0),5/N1*N2,5))))>5,5,IF(E2=0,0,IF(F2<=$AA$2,5/$Z$2*N2,IF(AND(F2>$AA$2,N1=0,N2>$X$2,N2<N3,N3>0),5/N3*N2,IF(AND(F2>$AA$2,N1>0,N2>$X$2,N2>N3,N3=0),5/N1*N2,5))))),3))

[attach]14947[/attach]
作者: ML089    時間: 2013-5-11 00:09

回復 18# PJChen
  1. =IF($G2="","",ROUND(MIN(5,IF(E2=0,0,IF(F2<=$AA$2,5/$Z$2*N2,IF(AND(F2>$AA$2,N1=0,N2>$X$2,N2<N3,N3>0),5/N3*N2,IF(AND(F2>$AA$2,N1>0,N2>$X$2,N2>N3,N3=0),5/N1*N2,5))))),3))
複製代碼

作者: PJChen    時間: 2013-5-11 00:35

回復 19# ML089

新的式子確實比原式簡短,函數說明中只標示了:MIN(number1, [number2], ...),
不知在新的式子中,min的用法解釋為何?
有無比較簡易的參考例子可幫忙我了解?
Tks.
作者: PJChen    時間: 2013-5-11 01:07

回復 19# ML089

min + if 的用法,以下是我自己的理解,錯了請指正.. TKS.

...MIN(5,IF(E2=0,0,IF(..,IF(..,IF(..))))),3))
解: 最小為5,否則 IF(E2=0,0,IF(..,IF(..,IF(..))))
作者: Bodhidharma    時間: 2013-5-11 01:16

回復 21# PJChen

呃…min(number1,number2,...numberN):回傳number1至numberN之中最小的值
所以min(5,一長串公式)就會回傳5和"一長串公式"之中最小的值,也就是一長串公式比5小的話就回傳一長串公式,比5大的話就回傳5
作者: PJChen    時間: 2013-5-11 01:22

回復 22# Bodhidharma

了解!!  min + if 的配合,真的比單獨用if 簡潔又好用!!  謝謝.
作者: Bodhidharma    時間: 2013-5-11 03:06

回復 7# p212

在excelhome找到一篇相當經典的text函數介紹文章
http://club.excelhome.net/forum.php?mod=viewthread&tid=331382
不過該篇有點深,可能得靜下心來好好研究
(話說我自己也在研究中…)
作者: ML089    時間: 2013-5-11 08:08

回復 21# PJChen

一般可以用比較法來加深 MIN(5, 公式)
公式的值為 1時,MIN(5, 1) = 1
公式的值為 1時,MIN(5, 2) = 2
公式的值為 1時,MIN(5, 3) = 3
公式的值為 1時,MIN(5, 4) = 4
公式的值為 1時,MIN(5, 5) = 5
公式的值為 1時,MIN(5, 6) = 5
公式的值為 1時,MIN(5, 7) = 5
...
這跟公式有多少 IF(...,IF(... 無關,
作者: Scott090    時間: 2013-5-11 09:36

利用儲存格式,真太妙了;學習,感謝
作者: PJChen    時間: 2013-5-11 13:33

回復 25# ML089

Noted, thanks.
作者: pigchen    時間: 2013-5-24 09:41

又學到一招,謝謝大大分享




歡迎光臨 麻辣家族討論版版 (http://forum.twbts.com/)