获取combox选中的值_非寿险中的VBA——高亮异常值

最近开始学习VBA,写点工具提升工作效率。

目前写了一些addins,对选中区域删除下三角、相对引用转绝对引用、移除公式。有需要可以私戳我。

03d8fd6596137d49af99f028dddf3a46.png

本文介绍我写的另一个小东西。

在非寿险评估工作中,需要看很多三角形。

用肉眼去观测三角形中的异常值非常辛苦。需要一个简单的工具来帮助我们找到异常的数据。

以Reported Loss Ratio(=Reported/Earned Premium)的三角形为例,希望找出不同事故年,同一进展年的赔付率的异常波动。

在Excel中的操作逻辑如下:

原始数据(非真实数据):

0f6840237c9c5dbcf810b7c3e8c52b69.png

对原始数据相邻行做差,得到LR每事故年的变动值,如下:

78df82ae44e908e929490bfa2a3456cd.png

以10%为阈值,对大于10%或者小于-10%的区域高亮。基础的想法是条件格式。使用条件格式后效果如下:

78f3d65b8c399321786ea2d1ca6f6051.png

这样就突显出了异常值,但是,一个额外的需求是,让原始数据区域出现同样的高亮。此时无法使用格式刷,因为格式刷中依然是条件格式,刷回原数据,回出现如下情况。

da44e0c3948990aa24988afb61114790.png

原始数据中,所有数值都高于10%,因此全为红色。

为了实现此额外的需求,写了VBA代码如下:

Sub suozai()
Dim rg As Range
Set rg = Selection '对选中的三角形区域进行操作,可设置为固定区域
Dim t As Single
t = 0.1 '可以将t设置为单元格的值,为不同的三角形设置不同的阈值
Dim countrows As Integer
Dim countcols As Integer
countrows = rg.Rows.Count
countcols = rg.Columns.Count
'通如下循环,实现对做差三角形中满足高亮的单元格进行高亮
Dim i, j As Integer
For i = 1 To countrows
    For j = 1 To countcols - i + 1
        If rg.Cells(i, j).Value > t Then
            rg.Cells(i, j).Interior.Color = 13551615
        End If
        If rg.Cells(i, j).Value < -t Then
            rg.Cells(i, j).Interior.Color = 13561798
        End If
    Next j
Next i

'接下来的步骤是把格式刷回原始数据,找到原始数据所在地,可以用数格子的方法,也可以用下面的方法.
Dim rg1 As Range
Dim c As String
c = rg.Cells(1, 1).Formula '提取做差三角形中第一个单元格的公式 =A-B
c = Mid(c, 2) '去掉公式中的等号 A-B
d = Split(c, "-")(0) '以减号为分界,分离A,B,并获取A。由于不同类型三角形的公式可能不同,此处可以应用正则表达式进行拓展。学习中
Set rg1 = Range(d).Resize(countrows, countcols) '得到初始数据所在的三角形
rg.Copy
rg1.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, _
        SkipBlanks:=False, Transpose:=False '刷格式
End Sub

使用VBA后的结果

103260b29db7e729169014642e9e8c16.png

完结撒花。有改进请大家指出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值