我可以在论坛中看到该问题已被问过几次,但是作为真正不了解宏的人,我无法实现答案中提供的代码。
因此,我记录了以下宏。
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。那是因为数据可以改变大小。
我该怎么做?
答案 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