加班時數函數設定

2013-06-26 11:05 pm
請問當加班>172H至<=214H時,要時數*1.33;加班時數>214H時,要時數*1.66,

A欄為實際上班時數 173H 180H 210H 214H 215H
B欄為>172H,<=214H
C欄為>214H

例如實際上班173H,超過172H,其加班時數為1H*1.33=1.33,以此類推

請問公式要怎麼設定才會自行總計超過172H,214H以下的時數統計呢?
更新1:

老怪物 您好 謝謝您 我先run看看 B2是(173-172)*1.33的值 請問是要以此公式為主嗎? D2 = if(A2<=172,A2,A2+(A2-172)*0.33+if(A2<=214,0,(A2-214)*0.33)) 不知是否可以幫忙解惑一下,公式組合意思呢? 另外,197.85與227.86是怎麼跑出來的呢?

更新2:

老怪物 您好 謝謝您 我先run看看 B2是(173-172)*1.33的值 請問是要以此公式為主嗎? D2 = if(A2<=172,A2,A2+(A2-172)*0.33+if(A2<=214,0,(A2-214)*0.33)) 不知是否可以幫忙解惑一下,公式組合意思呢? 另外,197.85與227.86是怎麼跑出來的呢?

更新3:

Dear Daniel: =SUM(TEXT(A1-{0,172,214},"0;!0")*{1,0.33,0.33}) 請問TEXT後面那串公試是什麼意思呢?

更新4:

Dear Daniel 謝謝您的解釋 很清楚

回答 (2)

2013-06-28 5:20 pm
✔ 最佳答案
=SUM(TEXT(A1-{0,172,214},"0;!0")*{1,0.33,0.33})

2013-06-27 22:48:01 補充:
此公式為累加的方式,加總所有的結果,可拆開為 TEXT(A1-{0,172,214},"0;!0") 與 {1,0.33,0.33} ,先將A1分別減去 0, 172, 214,當減去值為小於0時即為0,然後兩個陣列相乘,此時就是分別乘於 1, 0.33, 0.33,最後再加總,若將陣列分開,即:
(A1-0) * 1
(A1-172) * 0.33
(A1-214) * 0.33
以上三項若小於0時,即設定為0,然後再加總即得最後的結果

2013-06-27 22:51:32 補充:
亦可寫為:
=MAX((A1-0) * 1, 0 ) + MAX((A1-172) * 0.33, 0) + MAX((A1-214) * 0.33, 0 )

簡化後:
=A1+MAX((A1-172)*0.33,)+MAX((A1-214)*0.33,)

2013-06-28 09:20:33 補充:
計算公式:
=SUM(TEXT(A1-{0,172,214},"0;!0")*{1,0.33,0.33})

此公式為累加的方式,加總所有的結果,可拆開為 TEXT(A1-{0,172,214},"0;!0") 與 {1,0.33,0.33} ,先將A1分別減去 0, 172, 214,當減去值為小於0時即為0,然後兩個陣列相乘,此時就是分別乘於 1, 0.33, 0.33,最後再加總,若將陣列分開,即:
(A1-0) * 1
(A1-172) * 0.33
(A1-214) * 0.33
以上三項若小於0時,即設定為0,然後再加總即得最後的結果
亦可寫為:
=MAX((A1-0) * 1, 0 ) + MAX((A1-172) * 0.33, 0) + MAX((A1-214) * 0.33, 0 )

簡化後:
=A1+MAX((A1-172)*0.33,)+MAX((A1-214)*0.33,)
2013-06-27 3:50 am
設 A2 ~ A6 依次為加班時數 173, 180, 210, 214, 215.

設所謂 * 某一倍數 是指超過部分乘上該倍數.

則,. 例如結果依次放在 D2 ~ D6,

D2 = if(A2<=172,A2,if(A2<=214,172+(A2-172)*1.33,197.85+(A2-214)*1.66))

若不是超過部分才需加成計算, 而是總時數加成, 則

D2 = if(A2<=172,A2,if(A2<=214,A2*1.33,A2*1.66))

把 D2 複製, 貼到 D3 ~ D6.



另外, 我不知你的 B, C 兩欄是做什麼用的.



2013-06-26 22:39:23 補充:
D2 = if(A2<=172,A2,if(A2<=214,172+(A2-172)*1.33,197.85+(A2-214)*1.66))
應修正為


D2 = if(A2<=172,A2,if(A2<=214,172+(A2-172)*1.33,227.86+(A2-214)*1.66))

172+(214-172)*1.33 = 172+55.86
早先不知怎麼算錯成 197.85 --- 明顯不對!

也可以用:
D2 = if(A2<=172,A2,A2+(A2-172)*0.33+if(A2<=214,0,(A2-214)*0.33))

2013-06-28 16:01:01 補充:
D2 = if(A2<=172,A2,A2+(A2-172)*0.33+if(A2<=214,0,(A2-214)*0.33))

A2 不超過 172 時, 加班時數不變 (=A2);
A2 超過 172 但不超過 214 時,
 加班時數算 172+(A2-172)*1.33 = A2+(A2-172)*0.33;
A2 超過 214 時,
 加班時數算 172+(214-172)*1.33+(A2-214)*1.66
       = A2+(A2-172)*0.33+(A2-214)*0.33.

2013-06-28 16:05:48 補充:
"197.85" 是錯的, 而且是明顯錯誤, 這在我後面的補充說明已說明
並更正為 227.86, 這個數字也已說明就是 A2 超過 214 時公式前
段那個 172+(214-172)*1.33 = 172+55.86.


收錄日期: 2021-05-04 01:56:08
原文連結 [永久失效]:
https://hk.answers.yahoo.com/question/index?qid=20130626000016KK02618

檢視 Wayback Machine 備份