如何实现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
相关产品推荐
相关产品推荐

