Excel VBA Sumif功能

时间:2016-12-21 16:30:59

标签: excel vba excel-vba

我有一个工作脚本,我需要添加一个sumif。我想你应该能够看到我试图输入公式的地方。我试图在同一工作簿中引用另一个工作表。我坚持的部分是compPlan = L.

Sub CalculateCommission()
    Dim Index As Integer    'Row Index
    Dim employeeName As String 'A
    Dim compPlan As String  'B
    Dim baseWage As Double  'AM
    Dim commAN As Double 'AN
    Dim guarantee As Double 'AO
    Dim earningsDue As Double   'AQ
    Dim priorPay As Double 'AR from prior pay cycle
    Dim priorBase As Integer 'AS from prior pay cycle
    Dim newComm As Double   'AU
    Dim packBack As Double 'AP

    Index = 3

    Do While Len(ActiveSheet.Range("B" & Index))
        employeeName = UCase(ActiveSheet.Range("A" & Index))
        compPlan = UCase(ActiveSheet.Range("B" & Index))
        baseWage = ActiveSheet.Range("AM" & Index)
        newComm = ActiveSheet.Range("AU" & Index)
        earningsDue = ActiveSheet.Range("AQ" & Index)
        guarantee = ActiveSheet.Range("AO" & Index)
        packBack = ActiveSheet.Range("AP" & Index)


        If (IsError(ActiveSheet.Range("AR" & Index)) = False) Then
            priorPay = ActiveSheet.Range("AR" & Index)
        Else
            priorPay = 0
        End If

        If (IsError(ActiveSheet.Range("AS" & Index)) = False) Then
            priorBase = ActiveSheet.Range("AS" & Index)
        Else
            priorBase = 0
        End If

        commAN = ActiveSheet.Range("AN" & Index)


        If compPlan = "B" Or compPlan = "D" Or compPlan = "E" Or compPlan = "I" Or compPlan = "J" Or compPlan = "L" Then
                commAN = earningsDue - baseWage - guarantee - priorBase
            Else
                commAN = earningsDue - baseWage - guarantee
        End If


        If compPlan = "L" Then
                Sumact = Application.SumIf 'Calc by loan'!C:D,"Salesperson",'Calc by loan'!D:D)
        End If



        If compPlan = "B" Or compPlan = "D" Or compPlan = "E" Or compPlan = "I" Or compPlan = "J" Then
            If baseWage + newComm > baseWage Then
                earningsDue = baseWage + newComm + guarantee + priorBase - priorPay + packBack
            Else
                earningsDue = baseWage + guarantee + packBack
            End If
        Else
            If newComm > baseWage + priorPay Then
                earningsDue = newComm - priorPay + guarantee + packBack
            Else
                earningsDue = baseWage + guarantee + packBack
            End If
        End If
        ActiveSheet.Range("AQ" & Index).Value = earningsDue
        Index = Index + 1
    Loop
EndSub:
End Sub

1 个答案:

答案 0 :(得分:2)

您可以这样使用它:

Application.WorksheetFunction.SumIf(Worksheets("Calc by loan").Range("C:C"),"Salesperson",Worksheets("Calc by loan").Range("D:D"))