You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何实现WorksheetFunction.Sum沿列自动填充?VBA代码问题求助

问题解决:VBA求和后自动填充公式而非值

你遇到的核心问题是直接给单元格赋值求和结果(静态值),而非设置求和公式,导致填充后都是相同的数值。下面提供两种解决方案,适配你动态变化的变量和行数需求:

方案1:直接批量设置公式(最简单高效)

不需要单独写自动填充代码,直接给目标区域设置公式,Excel会自动处理相对引用:

Dim lastRow As Long

' 获取数据的最后一行(以C列有数据为例,可根据实际调整)
lastRow = Cells(Rows.Count, "C").End(xlUp).Row

' 给J列从第2行到最后一行设置求和公式,自动适配每行的C到I列
Range("J2:J" & lastRow).Formula = "=SUM(C2:I2)"

方案2:结合动态变量设置公式

如果你的求和起始列(fDate)和结束列(lDate)是动态变化的,可以通过拼接公式字符串实现:

Dim fDate As Range, lDate As Range
Dim lastRow As Long
Dim sumFormula As String

' 定义动态的求和范围起始和结束单元格
Set fDate = Range("C2") ' 可替换为你的动态起始单元格
Set lDate = Range("I2") ' 可替换为你的动态结束单元格

' 获取最后一行
lastRow = Cells(Rows.Count, fDate.Column).End(xlUp).Row

' 拼接相对引用的求和公式
sumFormula = "=SUM(" & fDate.Address(False, False) & ":" & lDate.Address(False, False) & ")"

' 批量设置公式到目标列(这里以J列为例)
Range(fDate.Offset(0, 7), Cells(lastRow, fDate.Column + 7)).Formula = sumFormula

关键说明

  • 之前的代码fCell = WorksheetFunction.Sum(rng)是将计算后的静态值写入单元格,而非公式,因此填充时只会复制同一个值。
  • 使用.Formula方法时,通过Address(False, False)获取单元格的相对引用地址(不带行号列号的$符号),这样公式填充到其他行时会自动调整引用范围。

内容的提问来源于stack exchange,提问作者FionaP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.13 09:05:04