咨询VBA实现Excel公式沿列整列填充且行号自动适配的方法
问题原因
- 写入公式时错误使用了
Value属性,仅会写入公式计算结果,不会写入公式本身 - 计算完总行数后没有执行填充操作,公式自然不会向下扩展
- 行号变量使用
Integer类型存在溢出风险(Excel最大支持1048576行,Integer最大值仅为32767),建议修改为Long类型
修正后可直接运行的代码
Dim sourceFormula As String ' 读取源表的公式 sourceFormula = ThisWorkbook.Worksheets("Sample").Range("A2").Formula Dim targetSht As Worksheet Set targetSht = ThisWorkbook.Worksheets("Sample 1") ' 写入目标表A2单元格公式 targetSht.Range("A2").Formula = sourceFormula ' 计算目标表最后一行(改为从下往上找,避免X列中间有空行时取值错误) Dim numr As Long numr = targetSht.Cells(targetSht.Rows.Count, "X").End(xlUp).Row ' 公式自动填充到最后一行,相对引用会自动适配行号 targetSht.Range("A2").AutoFill Destination:=targetSht.Range("A2:A" & numr), Type:=xlFillDefault
补充说明
如果不想用AutoFill方法,也可以直接给整列范围批量赋值公式,效果完全一致,写法更简洁:
' 替换上面的AutoFill行即可 targetSht.Range("A2:A" & numr).Formula = sourceFormula
你原公式里D2是相对引用,只要是正确写入Formula属性,不管用哪种填充方式,系统都会自动把对应行的引用调整为D3、D4...Dn,完全匹配你的需求。
内容的提问来源于stack exchange,提问作者steven
相关产品推荐
相关产品推荐

