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

如何用VBA将Excel指定单元格公式填充到A列对应最后一行

实现需求的VBA脚本

脚本1(推荐:自动适配已有公式)

如果你的Data工作表I2、J2、K2、L2、M2单元格已经提前写好正确的相对引用公式,直接用以下脚本即可:

Sub FillFormulaToLastRow()
    Dim ws As Worksheet
    Dim LastRow As Long
    
    ' 绑定目标工作表
    Set ws = ThisWorkbook.Worksheets("Data")
    
    ' 读取A列最后一个有有效数据的行号
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    ' 异常判断:如果A列只有表头甚至无数据,直接退出
    If LastRow < 2 Then
        MsgBox "A列无有效数据可匹配填充"
        Exit Sub
    End If
    
    ' 从第二行开始向下填充I-M列的公式
    ws.Range("I2:M" & LastRow).FillDown
End Sub

脚本2(自定义逐列配置公式)

如果需要手动指定每列的公式内容,可参考以下写法,按需替换各列的公式内容即可:

Sub CustomFillFormula()
    Dim ws As Worksheet
    Dim LastRow As Long
    
    Set ws = ThisWorkbook.Worksheets("Data")
    LastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
    
    If LastRow < 2 Then
        MsgBox "A列无有效数据可匹配填充"
        Exit Sub
    End If
    
    ' I列公式(你提供的示例公式)
    ws.Range("I2:I" & LastRow).Formula = "=IF(L2=1,IF(F2-E2>0,E2,IF(F2-E2<=0,F2,0)),IF(F2-E2>0,E2,IF(F2-E2<=0,F2-I1,0)))"
    ' 补充其余列公式即可
    ws.Range("J2:J" & LastRow).Formula = "J列对应公式"
    ws.Range("K2:K" & LastRow).Formula = "K列对应公式"
    ws.Range("L2:L" & LastRow).Formula = "L列对应公式"
    ws.Range("M2:M" & LastRow).Formula = "M列对应公式"
End Sub

原公式参考截图

公式截图

  • 执行脚本前建议先备份工作簿,避免公式引用错误导致数据丢失
  • 公式中使用相对引用时,Excel会自动根据填充行调整对应的行号,无需手动修改

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:45:04