首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >根据文本条件添加值

根据文本条件添加值
EN

Stack Overflow用户
提问于 2017-09-21 14:46:37
回答 1查看 53关注 0票数 0

首先,我将展示我的样本表:

这是一个保险机构的项目,我希望能够计算每个保单的佣金。

我在F列上创建了一个SUMIF公式

代码语言:javascript
复制
=SUMIFS(E:E,$A:$A,A2,$C:$C,C2)

如果C和A上的值匹配,则将E列上的值相加。现在我意识到我想要的东西有点复杂。

我需要一个公式,它可以将E上的值相加,如果它们首先在列A上匹配,那么棘手的部分在列C上,通常值不会匹配。

我想从表示新策略或续订策略的类型开始,将E中的值与F相加。因此,如果它说“保单认可”,它将添加这些字段和所有以前的字段,这些字段与列A匹配,并且在该字段上的日期和最近的(过去)续订或新政策委托字段之间。

如果这听起来有点令人困惑,我将在下面解释:

正如我所说,这是一个保险机构的项目,我希望能够计算每个保单的佣金。

保单每年更新一次,保单编号保持不变。我们知道这是一个不同的术语的唯一方法是查看类型和生效日期。如果我们看到ABIGAIL,我们注意到有两个不同的日期(它们正好相隔一年),类型显示"new policy“,当我们第一次将客户放在该运营商上时,类型显示”new Policy“,当条款重新开始时,续订政策在具有相同保单编号的新保单上。

一些保单在期中完成更改,比如SERGIO,他在续签之前增加了45.51。

我希望从最早的续订或新策略行开始更新值。

如下所示:

我给abigail举了一个最清楚的例子。如果你有任何问题请告诉我。

我正在寻找一个常规的Excel公式或VBA代码来完成这一点。对我来说,这两个都行。

EN

回答 1

Stack Overflow用户

发布于 2017-09-22 13:04:31

您可以通过VBA,通过适当的排序,然后通过累加来实现它。

如下所示:

代码语言:javascript
复制
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
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46337167

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档