excel vba 常规组织发展

Function 计算奖励(行号, 初始列号, 结果列号)
    '常规组织发展,一万奖1千2千3千,连续三个月,累进增长
    累计一万 = 0:    累计三万 = 0:    奖励 = 0
    For 列号 = 初始列号 To 初始列号 + 2
        If Cells(行号, 列号) >= 30000 Then
            Select Case 累计三万
                Case 0: 奖励 = 奖励 + 0.3
                Case 1: 奖励 = 奖励 + 0.6
                Case 2: 奖励 = 奖励 + 1
            End Select
            累计三万 = 累计三万 + 1
            累计一万 = 累计一万 + 1
        ElseIf Cells(行号, 列号) >= 10000 Then
            Select Case 累计一万
                Case 0: 奖励 = 奖励 + 0.1
                Case 1: 奖励 = 奖励 + 0.2
                Case 2: 奖励 = 奖励 + 0.3
            End Select
            累计一万 = 累计一万 + 1
            累计三万 = 0
        Else
            累计一万 = 0
            累计三万 = 0
        End If
    Next
    Cells(行号, 结果列号) = 奖励
End Function
Function 计算奖励2(行号, 初始列号, 结果列号)
    '一万奖一千,连续六个月,可断一次
    累计一万 = 0: 累计三万 = 0: 断开 = 0: 断开三万 = 0
    For 列号 = 初始列号 To 初始列号 + 5
        If Cells(行号, 列号) >= 30000 Then
            累计三万 = 累计三万 + 1
            累计一万 = 累计一万 + 1
        ElseIf Cells(行号, 列号) >= 10000 Then
            累计一万 = 累计一万 + 1
            断开三万 = 断开三万 + 1
            If 断开三万 = 2 Then 累计三万 = 0
        Else
            断开三万 = 断开三万 + 1
            断开 = 断开 + 1
            If 断开 = 2 Then 累计一万 = 0
            If 断开三万 = 2 Then 累计三万 = 0
        End If
    Next
    If 累计一万 > 4 Then Cells(行号, 结果列号) = 累计一万 * 0.1
    If 累计三万 > 4 Then Cells(行号, 结果列号) = 累计三万 * 0.3
End Function
Function 计算奖励3(行号, 初始列号, 结果列号)
    '一万奖一千,六个月,达成即奖
    累计一万 = 0: 累计三万 = 0
    For 列号 = 初始列号 To 初始列号 + 5
        If Cells(行号, 列号) >= 30000 Then
            累计三万 = 累计三万 + 1
        ElseIf Cells(行号, 列号) >= 10000 Then
            累计一万 = 累计一万 + 1
        End If
    Next
    Cells(行号, 结果列号) = 累计一万 * 0.1 + 累计三万 * 0.3
    
End Function
Sub 组织发展()
    Dim tim1 As Date: tim1 = Timer
    Application.ScreenUpdating = False '关闭屏幕刷新
    Application.DisplayAlerts = False '关闭提示
    On Error Resume Next '忽略错误
    '***************************************************************************
    Dim 行号%, 初始列号%, 结果列号%
    初始列号 = 7: 结果列号 = 52
    For 行号 = 3 To 159
        Call 计算奖励3(行号, 初始列号, 结果列号)
    Next
    
    For 行号 = 160 To 220
        Call 计算奖励3(行号, 初始列号 + 1, 结果列号)
    Next
    
    For 行号 = 221 To 324
        Call 计算奖励3(行号, 初始列号 + 2, 结果列号)
    Next
    '***************************************************************************
    Err.Clear: On Error GoTo 0 '恢复错误捕捉
    Application.DisplayAlerts = True '开启提示
    Application.ScreenUpdating = True  '开启屏幕刷新
    MsgBox Format((Timer - tim1) * 1000, "程序执行时间为:0.00毫秒"), 64, "时间统计"
End Sub

你可能感兴趣的:(excel vba 常规组织发展)