返回列表 上一主題 發帖

奬金要如何用vba計算呢

回復 22# GBKEE


    請大大查閱...

成績OK444.rar (19.39 KB)

TOP

回復 24# GBKEE


    謝謝大大的回覆..由衷感謝板主的幫忙
  單位方面有點寫錯..
營業單位應為 :萬里分部、 金山分部、石門分部、三之分部、義山分部、水碓分部、營業部、英專分部、竹圍分部、龍形分部、八里分部、板橋分 部、桃園分部、代理部、出納部、業務部、理財部
管理分部應為 :審查部、法務部、會計部、總務部、行政部、信用部、企劃部、教育部、人事部
  
不好意思..製造板主很多的問題 ,身感抱歉

TOP

回復 25# GBKEE

大大不好意思..在打擾一下

    營業單位應為
萬里分部、 金山分部、石門分部、三之分部、義山分部、水碓分部、營業部、英專分部、竹圍分部、龍形分部、八里分部、板橋分 部、桃園分部、代理部、出納部、業務部、理財部管理分部應為
審查部、法務部、會計部、總務部、行政部、信用部、企劃部、教育部、人事部

管理部有在vba
但營業單位沒有進到vba????

TOP

本帖最後由 sillykin 於 2013-7-22 22:20 編輯

依回覆22檔案
如果條件欄位不動..
但隨時可去條件欄位更動
責任額、達成額計算標準、幹部、非幹部獎懲標準表
是否可行呢???
因為直接去VBA去更動有點冒險,直接在條件儲存格去更動數字,比較不會犯錯.


板主不好意思..幾日來製造你很多問題.身感抱歉

TOP

回復 30# sillykin


    Option Explicit
Const 管理部門 = "審查室、法務室、會計室、總務室、行政管理室、徵信室、企劃室、教育發展室、資訊室"
Const 職務別 = "0,副總經理,協理,高級專員,經理,權理經理,副經理,副理,一等襄理,二等襄理,業務專員,辦事員,助理員,雇員,服務生"
Sub Ex()
    Dim I As Integer
    With Sheets("&&單位成績總表&&").Range("A3")
        Do While .Offset(I) <> ""
            獎金程式 .Offset(I), .Offset(I, 2), .Offset(I, 4)
            I = I + 1
        Loop
    End With
End Sub

Private Sub 獎金程式(單位 As Range, 職稱 As String, 達成額 As Integer)
    '  ****(條件工作表中) 沒有的職稱 ->  高級專員, 權理經理  ***
    Dim Ar, 責任額 As Integer, 達成百分比 As Single, 獎金 As Integer, 副總獎金 As Integer
    Dim 部門 As String, 職稱代號 As String, M As Integer '
    'LTrim、RTrim 與 Trim 函數  傳回一個沒有前頭空白 (LTrim)、後面空白 (RTrim)或前後均無空白的Variant (String),其中所含為給定的字串。*
    職稱代號 = Trim(單位.Offset(, 2))                                                   '傳回職稱代號前後均無空白的Variant (String)
    'Split 函數 傳回一個陳列索引從零開始的一維陣列,它包含指定數目的子字串。
    單位.Offset(, 7) = Application.Match(職稱代號, Split(職務別, ","), 0)               'Match 職稱代號在職務別以Split分割出的陣列中的位置
    'InStr 函數 傳回在某字串中一字串的最先出現位置,此位置為 Variant (Long)。
    部門 = IIf(InStr(管理部門, 單位), "管理部門", "營業部門")               'InStr傳回0->沒找到="營業部門"
    副總獎金 = 0                                                        '預設為副總獎金為 0
    責任額 = IIf(部門 = "管理部門", 300, 500)
    If 部門 = "營業部門" Then
        Ar = Array(0, 0, -10000, -7000, -5000, -4000, -3000, -2000, -1000, -500, 800, 75)           '非幹部(獎懲獎金)
        If 單位.Offset(, 7) <= 10 Then
            Ar = Array(0, 0, -25000, -20000, -16000, -12000, -8000, -6000, -4000, -2000, 2000, 155) '幹部  (獎懲獎金)
            M = Application.Match(職稱代號, Array("高級專員", "二等襄理", "一等襄理", "副經理", "協理", "經理", "副總經理"), 0)
            'M = > Match 的數字
            責任額 = Application.Index(Array(500, 1500, 2000, 2200, "(註1)", "(註1)", 2500), M)  '責任額 陣列(高級專員->100)
            'Index 傳回一個表格或範圍內的某個值或參照位址。
            副總獎金 = IIf(職稱代號 = "副總經理", 2000, 0)
        End If
    Else       ' 部門 => "管理部門"
        Ar = Array(0, 0, -10000, -7000, -5000, -4000, -3000, -2000, -1000, -500, 500, 55)  '非幹部(獎懲獎金)
        If 單位.Offset(, 7) <= 10 Then
            Ar = Array(0, 0, -25000, -20000, -16000, -12000, -8000, -6000, -4000, -2000, 1000, 75)    '幹部  (獎懲獎金)
            M = Application.Match(職稱代號, Array("高級專員", "二等襄理", "一等襄理", "副經理", "經理"), 0)
            '***沒有的職稱,[副總經理],管理單位如有副總經理(程式執行會產生錯誤)*****************************
            責任額 = Application.Index(Array(100, 600, 700, 800, 900, 2500), M)                         '責任額 陣列(高級專員->100)
           '管理部門沒有副總經理 -> ' 副總獎金 = IIf(職稱代號  = "副總經理", 2000, 0)
        End If
    End If
    單位.Offset(, 3) = 責任額
    '*************************************** F欄 (達成比率%)用公式有兩式可用*******************************
    單位.Offset(, 5) = "=Round(RC[-1] / RC[-2] * 100, 0)"              'R1C1表示法
   '單位.Offset(, 5) = "=Round(" & 單位.Offset(, 4).Address & " / " & 單位.Offset(, 3).Address & "* 100, 0)"
    '*******************************************************************************************************
    達成百分比 = Round(達成額 / 責任額 * 100, 0)
    '單位.Offset(, 5) = 達成百分比
    獎金 = 0
    If 達成額 / 責任額 * 10 < 3 Then
        M = 2
    ElseIf 達成額 / 責任額 * 10 > 10 Then
        M = 10
        獎金 = Ar(UBound(Ar))
    Else
        M = Int(達成額 / 責任額 * 10)
    End If
    單位.Offset(, 6) = Ar(M) + ((達成百分比 - 100) * 獎金) + 副總獎金   'Ar(M) = 獎懲的金額
    '獎金計算公式: = 獎懲的金額+  ((達成100%以上-100)* 獎金) + 副總獎金
End Sub
執行出來會發生錯誤

錯.JPG (12.25 KB)

錯.JPG

TOP

回復 35# sillykin


   如回覆31所檢附檔案
大大不好意思...想在請問...三個問題
第一問題
營業部上限最多奬金150,000元
管理部上限最多奬金120,000元
第二問題
假設
資訊室是一個獨立單位..且奬金是另外制定
例如
責任額100
奬金計算方式
達成額130
達成比率130%
達成100%加發250元
計算方式為(達成額/責任額)*100 = 逹成比率(%)   ==>奬金計算為((逹成比率(%) - 100)*達成100每一點加發5元)+達成100%加發250元

計算方式為(130/100)*100 = 130   ==>奬金計算為((130 - 100)*5)+250 = 400元
是否能在條件sheet中加設欄位值;方便更正
營業部上限最多奬金
管理部上限最多奬金
及資訊定控制項目
請大大指教

TOP

本帖最後由 sillykin 於 2013-7-29 21:08 編輯

回復 37# GBKEE


    條件如圖

例如
責任額100
奬金計算方式
達成額130
達成比率130%
達成100%加發250元
計算方式為(達成額/責任額)*100 = 逹成比率(%)   ==>奬金計算為((逹成比率(%) - 100)*達成100每一點加發5元)+達成100%加發250元

非幹部計算方式為(130/100)*100 = 130   ==>奬金計算為((130 - 100)*5)+250 = 400元
  幹部計算方式為(400/200)*100 = 200   ==>奬金計算為((200 - 100)*5)+500= 1,000元
是否能在條件sheet中加設欄位值;方便更正
營業部上限最多奬金150,000元
管理部上限最多奬金120,000元
資訊部上限最多奬金100,000元
及資訊定控制項目
請大大指教

資.JPG (55.39 KB)

資.JPG

TOP

回復 40# sillykin


    大大不好意思,請問小問題
營業單位責任額不一定為500,有少數人員會更動
能否不去判斷責任額
還有營業單位上限為150,000
管理單位上限為120,000
資訊單位上限為100,000
能否解決呢,謝謝

TOP

回復 42# GBKEE


    謝謝大指教,我會努力學習
責任額能否從總表去抓責任額,總表責任額由人工自行輸入

TOP

回復 43# sillykin


    獎金上限 = IIf(部門 = "營業單位", 150000, IIf(部門 = "管理單位", 120000, 100000))
我把奬金上限更改為150,000 ; 120,000 ; 100,000
為何會產生溢位情形????

未命名.JPG (11.63 KB)

未命名.JPG

TOP

        靜思自在 : 人的眼睛長在前面,只看到別人的缺點,絲毫看不到自己的缺點。
返回列表 上一主題