动态设置求和公式

161 篇文章 16 订阅
6 篇文章 0 订阅

实例需求:现有如下审计数据,有些项目为汇总费用,现在需要填充如下公式,由于分项的个数不确定,因此无法使用固定模板,也就是说每月报表的公式都不相同,只能使用VBA动态填充。

单元格公式费用汇总
C6=C7+C8+C9过路停车费+维修费+保险费
C12=C13其他

在这里插入图片描述

示例代码如下。

Sub Demo()
    Dim rng As Range, r, lst
    lst = Cells(ActiveSheet.Rows.Count, 1).End(xlDown).Row
    For r = 4 To lst
        If r < lst Then
            sum_row = r
            Set rng = Nothing
            Do While Left(Trim(Cells(r + 1, 1)), 1) = "-"
                If rng Is Nothing Then
                    Set rng = Cells(r + 1, 3)
                Else
                    Set rng = Union(rng, Cells(r + 1, 3))
                End If
                r = r + 1
            Loop
            If Not rng Is Nothing Then Cells(sum_row, 3).Formula = "=sum(" & rng.Address & ")"
        End If
    Next
    Set rng = Nothing
End Sub

【代码解析】
第3行代码获取数据表的最大行号。
第4行代码循环处理每行数据。
第8行代码判断项目名称是否开头符号为减号。如果满足条件,则说明是子费用项目,第9~13行代码将其合并保存在Range变量rng中。
第16行代码判断变量rng是否为空,如果不为空,则说明找到了相关的子费用项目,然后使用Formula属性为单元格设置公式,其中的rng.Address用于获取子费用项目区域的单元格引用地址。

运行代码,结果如下图所示。
在这里插入图片描述

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值