【Excel VBA编程】两种方法教你告别低效重复:让Excel公式填充快人一步
总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?…如果你也有类似的问题那就赶快关注我的公众号,本公众号一直在不间断地分享编程案例和实用技巧,无论您想提升自动化办公效率还是编程技能,都能收获满满
在日常办公中,Excel公式填充是我们经常遇到的操作,无论是财务核算、数据统计、报表汇总,还是日常数据整理……几乎每天都在发生
复制粘贴公式、手动拖拽填充柄,看似操作简单,然而面对海量数据、复杂报表、批量公式需求时,不仅耗时费力,还极易出现公式错位、漏填、错填等问题,严重拉低工作效率
而VBA作为Excel内置的自动化工具,凭借AutoFill与Range.Formula两大核心方法,能彻底颠覆传统手工填充模式,用代码实现一键批量、精准无误、灵活可控的公式自动填充,全方位彰显自动化办公的核心优势
接下来,我们将通过一个具体的案例,详细说明这两种实现方式的具体操作
需求描述
如下图所示表格中,E列是“数量”,F列是“单价”,需要在G列通过公式计算每一行的“总金额”(如G2填充公式“=E2*F2”),并要求自动填充至表格数据的最后一行

最终效果如下:

AutoFill实现
使用AutoFill并采用默认类型(xlFillDefault)时,公式中的相对引用(如E2、F2)会在填充过程中自动调整为相对于每一行的位置,即G3中的公式会变为=E3*F3,参考代码如下
Sub AutoFillFormula()Dim ws As WorksheetDim LastRow As Long' 设置目标工作表:当前活动工作表Set ws = ActiveSheet' 动态获取A列(或任意基准列)最后一个非空单元格的行号LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row' 在G2单元格写入初始公式ws.Range("G2").Formula = "=E2*F2"' 使用AutoFill方法将公式从G2填充到G列的最后一行ws.Range("G2").AutoFill Destination:=ws.Range("G2:G" & LastRow), Type:=xlFillDefault' 保存工作簿:当前活动工作簿ActiveWorkbook.SaveMsgBox "公式已自动填充至第 " & LastRow & " 行。", vbInformationEnd Sub
Range.Formula实现
对于不需要复杂填充逻辑,只是简单地将同一公式应用到连续区域的情况,选择Range.Formula实现,这比AutoFill更简洁
核心逻辑:直接定义目标单元格区域,通过Formula属性写入公式,VBA会自动处理相对引用,代码执行瞬间完成全区域公式赋值
参考代码
Sub FillFormulaDirectly()Dim ws As WorksheetDim LastRow As LongSet ws = ActiveSheetLastRow = ws.Cells(Rows.Count, "A").End(xlUp).RowRange("G2:G" & LastRow).Formula = "=E2*F2"End Sub
夜雨聆风
