- 帖子
- 5923
- 主題
- 13
- 精華
- 1
- 積分
- 5986
- 點名
- 0
- 作業系統
- win10
- 軟體版本
- Office 2010
- 閱讀權限
- 150
- 性別
- 男
- 來自
- 台灣基隆
- 註冊時間
- 2010-5-1
- 最後登錄
- 2022-1-23
        
|
5#
發表於 2013-7-20 14:24
| 只看該作者
本帖最後由 GBKEE 於 2013-7-21 05:30 編輯
回復 1# sillykin
試試看- Option Explicit
- 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(1 To 2), M, 責任額 As Integer, 達成百分比 As Single, 獎金 As Integer, 副總獎金 As Integer
- ' ****(條件工作表中) 沒有的職稱 -> 高級專員, 權理經理 ***
- If 單位 Like "管理*" Then
- '管理單位: 二等襄理, 一等襄理, 副經理, 經理
- '責任額 : 600 , 700 , 800 , 900
- Ar(1) = Array("二等襄理", "一等襄理", "副經理", "經理") '***管理單位 :沒有的職稱 ,副總經理
-
- Ar(2) = Array(300, 600, 700, 800, 900, 2500) '陣列(責任額) :
- Else
- '營業單位: 二等襄理, 一等襄理, 副經理, ( 協理、經理) 副總經理
- '責任額 : 1500 , 2000, 2200, (註1) , 2,500
- Ar(1) = Array("二等襄理", "一等襄理", "副經理", "協理", "經理", "副總經理")
- Ar(2) = Array(500, 1500, 2000, 2200, "(註1)", "(註1)", 2500) '陣列(責任額) :
- End If
- M = Application.Match(職稱, Ar(1), 0) 'M > 0 為幹部
- 副總獎金 = 0
- If IsError(M) Then
- '***** Match不到職稱時, M = 錯誤值 -> 非幹部**********
- 責任額 = Ar(2)(0) '非幹部 責任額: 300 或 500
- If 單位 Like "管理*" Then '管理單位
- '陣列:管理單位 非幹部 (獎懲獎金 表)
- Ar(2) = Array(0, 0, -10000, -7000, -5000, -4000, -3000, -2000, -1000, -500, 500, 55)
- ' , , <3% , <4%, <5%, <6%, <7%, <%8, <9% , <10%,>=10%,每1%.
- Else '營業單位
- '陣列:營業單位 非幹部 (獎懲獎金 表)
- Ar(2) = Array(0, 0, -10000, -7000, -5000, -4000, -3000, -2000, -1000, -500, 800, 75)
- '0, 0, <3% , <4%, <5%, <6%, <7%, <%8, <9% , <10%,>=10%,每1%.
- End If
- '***** Match不到職稱時, M = 錯誤值 -> 非幹部 **********
- Else
- '**************幹部 ************************************
- If M = UBound(Ar(1)) + 1 Then 副總獎金 = 2000 '副總達到獎金會再多2000元
- 責任額 = Ar(2)(M)
- If 單位 Like "管理*" Then
- '陣列:管理單位 幹部 (獎懲獎金 表)
- Ar(2) = Array(0, 0, -25000, -20000, -16000, -12000, -8000, -6000, -4000, -2000, 1000, 75)
- ' , , <3% , <4%, <5%, <6%, <7%, <%8, <9% , <10%,>=10%,每1%.
-
- Else
- '陣列:營業單位 幹部 (獎懲獎金 表)
- Ar(2) = Array(0, 0, -25000, -20000, -16000, -12000, -8000, -6000, -4000, -2000, 2000, 155)
- ' , , <3% , <4%, <5%, <6%, <7%, <%8, <9% , <10%,>=10%,每1%.
-
- End If
- '**************幹部 ************************************
- End If
- 單位.Offset(, 3) = 責任額
- 達成百分比 = Round(達成額 / 責任額 * 100, 0)
- 單位.Offset(, 5) = 達成百分比
- 獎金 = 0
- If 達成額 / 責任額 * 10 < 3 Then
- M = 2
- ElseIf 達成額 / 責任額 * 10 > 10 Then
- M = 10
- 獎金 = Ar(2)(UBound(Ar(2)))
- Else
- M = Int(達成額 / 責任額 * 10)
- End If
- 'Ar(2)(M) = 獎懲的金額
- 單位.Offset(, 6) = Ar(2)(M) + ((達成百分比 - 100) * 獎金) + 副總獎金
- '獎金計算公式: 獎懲的金額+ ((達成100%以上-100)* 獎金) + 副總獎金
- End Sub
複製代碼 |
|