【问题标题】:Paste a formula into a range of cells using macros使用宏将公式粘贴到一系列单元格中
【发布时间】:2025-12-02 12:40:01
【问题描述】:

我正在尝试将公式粘贴到一系列单元格中(我只希望它粘贴到 K 列最后使用的行),但我不断收到语法错误

With ThisWorkbook
With .Sheets("Ex")
    lRow4 = .Cells(.Rows.count, 1).End(xlUp).Row
    Set rng4 = .Range("J6:J" & lRow4)
    rng4. FormulaR1C1."=IF(RC[1]='Lease & RPM Charges'!R[-4]C[-6],UPPER(TEXT(REPLACE(REPLACE('Lease & RPM Charges'!R[-4]C[-7],5,0,""-""),8,0,""-""),""DD-mmm-YY"")))"
End With

End With
End Sub 

【问题讨论】:

    标签: excel vba


    【解决方案1】:

    注意

    .Cells(.Rows.count, 1).End(xlUp).Row
    

    为您提供第 1 列的最后使用的行,即 A 列。
    你可以使用……

    .Cells(.Rows.count, "K").End(xlUp).Row
    

    取而代之的是,获取 K 列中最后使用的行。


    rng4. FormulaR1C1. 也应该是 rng4.FormulaR1C1 =

    With ThisWorkbook.Sheets("Ex")
        lRow4 = .Cells(.Rows.count, "K").End(xlUp).Row
        Set rng4 = .Range("J6:J" & lRow4)
        rng4.FormulaR1C1 = "=IF(RC[1]='Lease & RPM Charges'!R[-4]C[-6],UPPER(TEXT(REPLACE(REPLACE('Lease & RPM Charges'!R[-4]C[-7],5,0,""-""),8,0,""-""),""DD-mmm-YY"")))"
    End With
    

    【讨论】:

    • 我按照您的建议进行了更改,但仍然有语法错误
    • @Leena 如果你不知道哪个错误和哪一行我们无能为力。
    • @Leena 我在我的工作簿中完成了这段代码,并且直到最后一行代码都可以正常工作,因为我的 excel 不是英文的,所以它不起作用。我相信你的公式有误,如果你尝试手动执行它,就会遗漏一些会给你带来错误的东西。
    • @Damian 这适用于任何本地化,因为FormulaR1C1 采用英文公式。 FormulaR1C1Local 用于本地化公式(非英文公式)。所以上面的代码适用于任何语言版本。公式可能还是错误的,所以 leena 应该检查公式。
    • 抱歉,我错过了其中一个 "