2012年7月31日 星期二

【Excel】絕地改造系列(i)-對帳請款單-『取得單價計算總價(2/2)』( Lesson 6/7 )


【Excel】絕地改造系列(i)-對帳請款單-『拉皮工程』(Lesson 2/7)
【Excel】絕地改造系列(i)-對帳請款單-『儲存格格式自定』( Lesson 3/7 )
【Excel】絕地改造系列(i)-對帳請款單-『才數計算公式』( Lesson 4/7)
【Excel】絕地改造系列(i)-對帳請款單-『取得單價計算總價(1/2)』( Lesson 5/7 )

本系列堂內最後一堂課~~撐著點各位~



分析:總價的計算方式為 (才數×數量×單價),若單價<150則以150計算
經過昨日的課程,我們已取得單價的計算方式
=IF(ISNA(VLOOKUP(B5,Price!A:B,2,FALSE)),"未設單價",VLOOKUP(B5,Price!A:B,2,FALSE))

《1》判斷有「才數」的總價計算為 (才數×數量×單價),若沒「才數」則為(數量×單價)

同樣要使用的是IF函數來判斷,至此有沒有發現…『假如』真的很重要。
【Excel】IF,假如你不會用…小心落伍囉~( Lesson 1/1)

但在寫函數之前,先想一下,若沒有單價還需計算嗎?所以我們要從單價函數中最後一段動手腳喔!
=IF(ISNA(VLOOKUP(B5,Price!A:B,2,FALSE)),"未設單價",VLOOKUP(B5,Price!A:B,2,FALSE))
假如該品名找不到單價,則顯示"未設單價",否則----假如有才數,則計算 (才數×數量×單價),否則計算(數量×單價)
↑看到了嗎?有兩個假如喔~~
=IF(ISNA(VLOOKUP(B5,Price!A:B,2,FALSE)),"未設單價",IF(E5<>"",E5*F5*VLOOKUP(B5,Price!A:B,2,FALSE),F5*VLOOKUP(B5,Price!A:B,2,FALSE)))
昏頭了嗎?把單價(VLOOKUP(B5,Price!A:B,2,FALSE))那串用「@單價」來替代
=IF(ISNA(VLOOKUP(B5,Price!A:B,2,FALSE)),"未設單價",IF(E5<>"",E5*F5*@單價,F5*@單價))
這樣看得出來嗎??



《2》注意一下,有才數的總價計算,因為若<150,則必需以150做為總價。
所以…各位同學,我們該用什麼函數來判斷呢?
是的…又是IF了~~
我們在 (才數×數量×單價)的這一段裡…再加入IF判斷式~
=IF(ISNA(VLOOKUP(B5,Price!A:B,2,FALSE)),"未設單價",IF(E5<>"",E5*F5*VLOOKUP(B5,Price!A:B,2,FALSE),F5*VLOOKUP(B5,Price!A:B,2,FALSE)))
E5*F5*VLOOKUP(B5,Price!A:B,2,FALSE)   →  IF(E5*F5*VLOOKUP(B5,Price!A:B,2,FALSE)<150,150,E5*F5*VLOOKUP(B5,Price!A:B,2,FALSE))

如果看不懂…再另外問老師我吧!
把那一段判斷式,放回原來那一長串函式裡~
=IF(ISNA(VLOOKUP(B6,Price!A:B,2,FALSE)),"未設單價",IF(E6<>"",IF(E6*F6*VLOOKUP(B6,Price!A:B,2,FALSE)<150,150,E6*F6*VLOOKUP(B6,Price!A:B,2,FALSE)),F6*VLOOKUP(B6,Price!A:B,2,FALSE)))

這就是最終的答案喔!



對於這段落落長的函數…各位有啥感受!
其實這麼長的函數…不過也就是用了那3個IFISNAVLOOKUP罷了…其中IF相對重要。會拉這麼長也是因為不斷的判斷、判斷、判斷。
用常理的思考角度去把函式寫出來…無需賣弄計巧或找特別的函數…

最好的程式,就是最簡單易懂的程式~~最白話的文字~

這樣過了很久之後,再回頭改函數時…相信光用看的就會知道這段在做什麼判斷了!
加油喔!各位~~

至今最長的一門課…到這裡告一段落!!明日還有番外篇喔~請期待~








沒有留言:

張貼留言