close
不知道各位有沒有一種「書到用時方恨少」的感觸,明明手邊就
有個很好的工具,邏輯判斷也能迅速寫完,可惜的是工具無法順
利運行的感嘆。雖踢到鐵板,卻也學到了豐富的經驗,幸運啊!

這次剛好幫朋友的忙,利用 Excel試算一些判斷的公式,程式很
簡單地已在腦袋裡寫好,但就是不會使用 Excel的 IF 函數,搞
得有種很想撞牆的感嘆,明明邏輯正確,語法卻是怎麼寫怎麼不
斷,這樣怎麼對得起「亞美冰」 (花媽) 呢?

附註:亞美冰是我高中教程式的導師,目前升格為花媽,這說來
   話長,總之,她有個可愛的寶貝女兒「橘子」,想看橘子
   照片,請移架至相簿吧!那裡翻翻找找就會看到可愛的身
   影囉!目前亞美冰仍在以前的學校任職,非常年輕的唷!


好吧!廢話不多說,先來解釋我們要計算的公式。

A:變數一,B:變數二,C:變數三,X:暫存值,Z:計算結果

X = A/B

X < 2 → (A-B) * 0.4 * C = Z
3 > X >= 2 → (0.5 * A - 0.6 * B) * C = Z
X >= 3 → (0.6 * A - 0.9 * B) * C = Z

上面這個公式很簡單,按照以前寫程式的習慣,IF..Alse,就可
以解決,要不然用 Select..Case,也是 OK,但當看到 Excel怪
公式,腦筋就突然轉不過來了!


Excel IF 函數公式說明:

IF(logical_test,[value_if_true],[value_if_false])


按照這個地方,剛開始看得時候一定看不懂這是什麼鬼東西,似
乎沒有辦法像寫程式那樣簡單寫出視覺化的巢狀程式。網路上也
翻了一些文件來看,可能是搜尋條件太差的關係,老是翻到一堆
自己已經會的東西,加上 Office 2003的「F1」又找不到有關,
IF函數的使用方法。〈應該是我太遜沒找到〉經過前輩的提醒,
突然看懂該怎麼運用這個函數了。


logical_test,這邊可以加上判斷條件,還可以加上 AND,取出
數值,例如這樣:

IF(AND(A1=1,B1=2),A1*0.5,B1*0.6)

換個角度,看上面的公式,不難發現 False的時候,可以在接著
往下個IF判斷下去,因為假如 logical_test 判斷為 True 時,
會執行 value_if_true, False時,則可以在加上另個判斷。


按照上面的公式看來,我們可以歸類一下程式,因為只有三種判
斷,自然就比較簡單一下點。

IF(IF(E2>=3,((0.6*A2)-(0.9*B2))*C2,IF(E2<2,(A2-B2)*0.4*C2,IF(3>E2>=2,(0.5*A2-0.6*B2)*C2,))))

※ 朋友告訴我原來在 Excel 可以這樣寫「3>E2>=2」,
  要不然還是很難直覺性的寫出判斷。

看懂了嗎?

IF(E2<2,(A2-B2) *0.4 *C2,)
  

這段式是第一段 False 所執行的巢狀程式喔!

對了!要補充一點,按照微軟的說法,IF這個函數最多只能使用
「七層巢狀程式」,超過七層會發生什麼?目前沒試過,假如有
人有實際經驗,再麻煩回覆留言分享一下囉! ^^~

我猜,在「IF (3>E2>=2,(0.5*A2-0.6*B2)*C2,)」這段,有人一
定會覺得奇怪,怎麼會多了個逗號?嗯!這就是小的我疏忽的經
驗談,當這短短的程式寫完後,突然視窗出現語法錯誤的訊息,
不管我怎麼找,都覺得應該沒錯啊?但,還是要注意一下喔!那
就是,即使你後面沒有 False要執行的判斷,別忘記在寫法要完
整結束,請加上「逗號」,讓函數完整,不然!Excel 是不會輕
易讓您過關的。

以上,就是小的我在這次的經驗分享,這次沒想到會在這個工具
上花掉不少時間除錯,果然,以前 Excel已經還給老師不少東西
了,藉由這次的經驗值獲得,寫了這篇教學,希望各位還看得懂
,當然!我不是程式好手,可能端出了一個不是很好的菜色。僅
當作自己以後查看方便之用。


對了! Excel太久沒用,突然還忘記該如何「取消隱藏」,幸好
朋友相當有經驗的告訴我,又剛好替自己解惑囉!

例如:
E欄,整欄隱藏,假如要「取消隱藏」,請將「D」、「F」兩欄
全選,再選擇「取消隱藏」這樣一來,E欄又出現囉!^0^/

果然?我那時候 Excel已經全部忘光了啊!真是糟糕啊!


好吧!拉哩拉雜寫了這麼多,單純的只是要提醒自己要不斷地學
習做筆記,要不然以後碰到問題,看來又得翻一堆網路文件,強
迫自己倒也不是壞事。現在每天都非常認真的學習各樣事務,感
覺收穫真不少,雖有時候會被整得昏頭轉向,不過,靜下心來逐
一處理事情,也是件不易學習的情緒管理哩!

現在每天都過得很快樂,我想?築夢踏實或許正是此意吧?^0^/


                          Paul

                       2007.03.08
arrow
arrow
    全站熱搜

    paul 發表在 痞客邦 留言(9) 人氣()