✔ 最佳答案
Function 想要寫得簡單,我們必須要為你輸入的東西加點限制。
1. 有薪年假的格式,必須為「A + space + 0.0 」這樣的格式,一共是五個位的字串,如果你要加 remarks 的話,你必須加在後面,例如:「A 2.5 去旅行」
2. 其他所有儲存格都不要用「A + space」來開頭,即是你可以用「Absent 」「Apple」,但最好不要打「A cup of tea」。
Function 如下:
=SUM(IF(LEFT(E8:AH8,2)="A ",VALUE(MID(E8:AH8,3,3)),0))
** 此乃 Array Function,完成輸入之後要按「Ctrl + Shift + Enter」,成功的話 Formula Bar 會顯示用大括號 { } 圍著 function。[如下圖]
** 注意 ="A " <--A 後面是有一個 space 的。
圖片參考:
http://imgcld.yimg.com/8/n/HA00878676/o/701202170123413873437980.jpg
圖例中我只用了 E1 到 J1,加總的答案在 K1。
非常簡單的解釋一下:
1. 首先是裡面的 IF function。
- LEFT(E8,2)="A ",就是 cell E8 的字串,頭兩位要等於「A + space」;
- MID(E8,3,3) 就是從 cell E8 的字串中,由第三位開始,取出三個字,就是第 3 至 5 位的字了,也就是日數,0.0。
- 因為 MID function 傳回的是字串,不能相加,所以要再轉成數值,用 VALUE function。
- 後面的零意思就是如果條件不乎,IF 運算式傳回 0 。
2. 然後我們用一個 SUM 把所有 IF 傳回的結果加起來。就是你的答案了。
2012-02-17 13:18:32 補充:
Formula 的除錯,亦是引人入勝之事。
首先,那個 #Value 是什麼意思呢?#Value 是 Excel 裡面的其中一個個錯誤。一般來說,就是你用數字的運算式,來運算文字。
例如 := 1 + "A" 就會出現 #Value 了。
在我給你的 Array Function,一般來說 SUM、LEFT、IF、MID,都不太會傳回 #Value 了。最大的可能性,就是 VALUE function 了。它的用途是把字串,變回數值。
例如:= VALUE("1.1") ,就會傳回 1.1。如果是= VALUE("1.a") 呢?這就會出問題,而傳回 #Value 了。
字數不夠,後續.
2012-02-17 13:24:46 補充:
這就是我跟你說的限制 2 了。
Cell A1 = 「A 2.5」
Cell A2 = 「A 1.0 上大學」
Cell A3 = 「A Cup of Tea」
那個 IF function 的傳回值,是 VALUE(MID(E8:AH8,3,3)),看看拿它運算我上面的例子會如何?
VALUE(MID(A1,3,3)) = 2.5
VALUE(MID(A2,3,3)) = 1.0
VALUE(MID(A3,3,3)) = #Value!
所以我才會說,其它的 cell 都不要用「A + space」來開頭,不然就會有錯誤了。
字數不夠,後續.
2012-02-17 13:27:15 補充:
Excel 內建了一個功能,叫 evaluate formula。你先點選有 #value 的儲存格,然後打開 evaluate formula,然後一步一步的按 evaluate 鍵,你就可以找到首先出現 #value 的地方,再修改你的 data,又或者 formula 了。