Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/vba/17.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Excel 将公式复制到最后一行数据_Excel_Vba - Fatal编程技术网

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

Excel 将公式复制到最后一行数据,excel,vba,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.Fo

我可以看到这个问题在论坛上被问了好几次,但作为一个不太懂宏的人,我无法实现答案中提供的代码

所以我录制了下面的宏

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:=range2:E4向下填充到最后一行数据,而不仅仅是E4。这是因为数据的大小可以改变


怎么做?

您似乎正在用不同的相对/绝对引用覆盖某些公式。就相对/绝对寻址而言,使用哪一个似乎并不重要,但列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

这些公式的工作表名是什么?我没有写代码。我使用了record宏函数,只是执行了我想做的事情。那么我在哪里插入代码呢?我能猜出宏是怎么说的,但我根本不知道它的结构。谢天谢地,每个配方好像你做了两次。你可能想研究一下。是的,我做了,因为有两个单元格我想要这个公式,但它会索引不同的单元格。其中一个是我编辑公式的时候,我把$放进去锁定公式。