这是一个保险代理机构的项目,我希望能够计算每个政策的佣金。
我在F栏上创建了一个描述
的SUMIF公式=SUMIFS(E:E,$A:$A,A2,$C:$C,C2)
如果C和A上的值匹配,则会在列E上添加值。现在我意识到我想要的东西有点复杂。
如果首先它们在A列上匹配,我需要一个可以在E上添加值的公式,然后棘手的部分在C列中,通常值不匹配。
我想在F上添加E中的值。从表示NEW Policy或RENEWAL策略的类型开始。因此,如果它显示“政策认可”,它将添加这些字段,其中包含与A列匹配的所有先前字段,并且位于该字段上的日期与最近(转到过去)续订或新政策佣金字段之间。
如果听起来有点令人困惑,请在下面解释:
正如我所说,这是一个保险机构的项目,我希望能够计算每个政策的佣金。
政策每年续订,并保持相同的政策号码。我们知道这是一个不同术语的唯一方法是查看TYPE和EFFECTIVE DATE。如果我们看到ABIGAIL,我们注意到有2个不同的日期(它们相隔一年),并且类型显示“新政策”,当我们第一次将客户放在此运营商和续订政策时,当该条款重新启动时具有相同的政策编号。
有些政策会在期限中间完成更改,例如SERGIO,在续订前增加了45.51。
我希望从最早的续订或新的政策行开始更新值。
类似的东西:
我用阿比盖尔放置了最清楚的例子。如果您有任何问题,请与我们联系。
我正在寻找常规的Excel公式或VBA代码来完成这项工作。要么对我有用。
答案 0 :(得分:0)
您可以通过适当的排序然后通过累积添加来通过VBA实现它。
这样的事情:
Sub calcComm()
Dim rng1 As Range, rng2 As Range, rng3 As Range, rng4 As Range, lastrow As Long, ttl As Double
lastrow = Cells(ActiveCell.SpecialCells(xlLastCell).Row + 1, 1).End(xlUp).Row + 1
Set rng1 = ActiveSheet.Range("A" & lastrow & ":E" & 2)
rng1.Sort Columns(3)
rng1.Sort Columns(1)
rng1.Sort Columns(2)
Set rng3 = rng1.Cells(1)
For Each rng2 In rng1.Columns(1).Cells
If rng2 = rng3.Cells(1) And (ttl = 0 Or (rng2.Offset(0, 3) <> "New Policy" And rng2.Offset(0, 3) <> "Renewal Policy")) Then
ttl = ttl + rng2.Offset(0, 4)
Set rng3 = Range(rng3.Address & ":" & rng2.Address)
Else
For Each rng4 In rng3
rng4.Offset(0, 5) = ttl
Next
Set rng3 = rng2
ttl = rng2.Offset(0, 4)
End If
Next
End Sub