允许通过VBA插入公式以适应行编号
问题描述:
如何允许通过VBA插入的forumla适应行编号(即,使用下面的代码在第50000行插入的公式将变为GCDnm(D5000,E5000) GCDnm(D6,E6)?的允许通过VBA插入公式以适应行编号
列B是其中信息被从下面的代码添加由式连续。柱J和K都充满主柱。
Sub macro2()
Dim lastrow, lastrowJ, lastrowK As Long
lastrow = Cells(Rows.Count, "B").End(xlUp).Row
lastrowJ = Cells(Rows.Count, "J").End(xlUp).Row
lastrowK = Cells(Rows.Count, "K").End(xlUp).Row
Range("J" & lastrowJ + 1 & ":J" & lastrow).Formula = "GCDnm(D6,E6)"
Range("K" & lastrowK + 1 & ":K" & lastrow).Formula = "LOOKUP(....)"
End Sub
所以相反,我会喜欢它像
Range("J" & lastrowJ + 1 & ":J" & lastrow).Formula = "GCDnm(Dcurrentrow,Ecurrentrow)"
Range("K" & lastrowK + 1 & ":K" & lastrow).Formula = "LOOKUP(....)"
当前行是公式被粘贴的行。
答
第一种方法,是用调整大小:
Range("J" & lastrowJ + 1).Resize(lastrow - lastrowJ - 1).Formula = _
"=GCDnm(D" & lastrowJ + 1 & ",E" & lastrowJ + 1 & ")"
Range("K" & lastrowK + 1).Resize(lastrow - lastrowK - 1).Formula = _
"=LOOKUP(D" & lastrowK + 1 & ",...)"
代替
Range("J" & lastrowJ + 1 & ":J" & lastrow).Formula = "GCDnm(D6,E6)"
Range("K" & lastrowK + 1 & ":K" & lastrow).Formula = "LOOKUP(....)"
下一页方法是使用自动填充(你只需要在J
列线lastrowJ + 1
设置公式lastrowK + 1
列K
,并将它们拉伸):
Range("J" & lastrowJ + 1).Formula = _
"=GCDnm(D" & lastrowJ + 1 & ",E" & lastrowJ + 1 & ")"
Range("K" & lastrowK + 1).Formula = _
"=LOOKUP(D" & lastrowK + 1 & ",...)"
Range("J" & lastrowJ + 1).AutoFill _
Destination:=Range("J" & lastrowJ + 1 & ":J" & lastrow), Type:=xlFillDefault
Range("K" & lastrowK + 1).AutoFill _
Destination:=Range("K" & lastrowK + 1 & ":K" & lastrow), Type:=xlFillDefault
或另一种方式。如果你知道你在J6
和K6
(例如在=GCDnm(D6,E6)
)比你可以使用这种方法有相对公式(没有$符号):
Range("J6").Copy
Range("J" & lastrowJ + 1 & ":J" & lastrow).PasteSpecial xlPasteFormulas
Range("K6").Copy
Range("K" & lastrowK + 1 & ":K" & lastrow).PasteSpecial xlPasteFormulas
Application.CutCopyMode = False
答
也就是说在VBA自动。比如你想在C列用的总和和b输入公式是这样的:
Range("C1").Formula = "A1+B1"
在一个
和价值观,B是动态的,所以你得到的最后一排。
lrow = Cells(Rows.Count, "A").End(xlUp).Row
Range("C1:C" & lrow).Formula = "A1+B1"
上面的代码将导致斧+ Bx的总和,其中x是C.
的相应行 所以没必要担心。只需确定你想要的公式的范围。
然后提供仅用于上述第一组行的公式,这是很好的去。
答
要插入一个公式,就是位置感知,使用公式的R1C1格式
使您的公式是(我认为)在J6,这是目前
=GCDnm(D6,E6)
成为
=GCDnm(RC[-6],RC[-5])
并且将在任何J单元格中工作--Excel然后将其显示为适当的GCDnm()公式。 如果您想要了解R1C1配方是什么而不必更改选项,则可以打印(?)在即时窗口的值:?
[J6] .formula
= GCDnm(D6,E6)
[J6] .formular1c1
= GCDnm(RC [-6],RC [-5])
而不是逐个添加公式,因为动态地在B中添加值,只需确定新范围以填写公式并在其中重新应用即可。查看我的帖子,获取简单的解释。 – L42