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

