乐于分享
好东西不私藏

【Excel VBA编程】两种方法教你告别低效重复:让Excel公式填充快人一步

【Excel VBA编程】两种方法教你告别低效重复:让Excel公式填充快人一步

AutoFill与Formula双法实战解析

总是听到或看到有人问,编程好学吗?如何入门?多久能学会?它能做些什么?怎么写代码呀?…如果你也有类似的问题那就赶快关注我的公众号,本公众号一直在不间断地分享编程案例和实用技巧,无论您想提升自动化办公效率还是编程技能,都能收获满满

在日常办公中,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 Worksheet    Dim 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.Save    MsgBox "公式已自动填充至第 " & LastRow & " 行。", vbInformationEnd Sub

Range.Formula实现

对于不需要复杂填充逻辑,只是简单地将同一公式应用到连续区域的情况,选择Range.Formula实现,这比AutoFill更简洁

核心逻辑:直接定义目标单元格区域,通过Formula属性写入公式,VBA会自动处理相对引用,代码执行瞬间完成全区域公式赋值

参考代码

Sub FillFormulaDirectly()    Dim ws As Worksheet    Dim LastRow As Long    Set ws = ActiveSheet    LastRow = ws.Cells(Rows.Count, "A").End(xlUp).Row    Range("G2:G" & LastRow).Formula = "=E2*F2"End Sub
本站文章均为手工撰写未经允许谢绝转载:夜雨聆风 » 【Excel VBA编程】两种方法教你告别低效重复:让Excel公式填充快人一步

评论 抢沙发

7 + 4 =
  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址
×
订阅图标按钮