将公式复制到数据的最后一行

时间:2018-09-19 01:35:48

标签: excel vba

我可以在论坛中看到该问题已被问过几次,但是作为真正不了解宏的人,我无法实现答案中提供的代码。

因此,我记录了以下宏。

Macro6 Macro
'

'


 Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=INDEX('Account codes'!C[-1],MATCH(DATA!RC[4],'Account codes'!C[-2],0))"
    Range("C2").Select
    ActiveCell.FormulaR1C1 = _
        "=INDEX('Account codes'!C2,MATCH(DATA!RC[4],'Account codes'!C1,0))"
    Range("C2").Select
    Selection.Copy
    Range("E2").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    ActiveCell.FormulaR1C1 = _
        "=INDEX('Account codes'!C2,MATCH(DATA!RC[4],'Account codes'!C1,0))"
    Range("E2").Select
    ActiveCell.FormulaR1C1 = _
        "=INDEX('Account codes'!C2,MATCH(DATA!RC[3],'Account codes'!C1,0))"
    Range("E2").Select
    Selection.AutoFill Destination:=Range("E2:E4")
    Range("E2:E4").Select
    Range("C2").Select
    Selection.AutoFill Destination:=Range("C2:C4")
    Range("C2:C4").Select

End Sub

简单来说,我希望Selection.AutoFill Destination:=Range("E2:E4")填充到数据的最后一行,而不仅仅是E4。那是因为数据可以改变大小。

我该怎么做?

1 个答案:

答案 0 :(得分:1)

您似乎正在用不同的相对/绝对引用覆盖某些公式。就相对/绝对寻址而言,使用哪一个似乎并不重要,但对于E列,您有两个不同的公式,它们引用了数据工作表上的两个不同的单元格。我将使用两者中的后者。

一次将所有公式放入所有单元格中。在这种情况下,自动填充功能被高估了,功能上很多余。

C列的公式似乎正在使用对F列中单元格的相对引用。您可以使用该列来确定将公式放入的最后一行。

sub buildFormulas()

    dim lr as long

    with worksheets("data")

        lr = .cells(.rows.count, "F").end(xlup).row

        .range(.cells(2, "C"), .cells(lr, "C")).formular1c1 = _
          "=INDEX('Account codes'!C2, MATCH(RC7, 'Account codes'!C1, 0))"

        .range(.cells(2, "E"), .cells(lr, "E")).formular1c1 = _
          "=INDEX('Account codes'!C2, MATCH(RC8, 'Account codes'!C1, 0))"

    end with

end sub