匿名使用者
匿名使用者 發問時間: 電腦與網際網路軟體 · 8 年前

加班時數函數設定

請問當加班>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以下的時數統計呢?

已更新項目:

老怪物 您好

謝謝您 我先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 個解答

評分
  • Daniel
    Lv 7
    8 年前
    最佳解答

    =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,)

  • 8 年前

    設 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.

還有問題?馬上發問,尋求解答。