从最后一行到最后一行的粘贴公式

我正在使用excel进行某些处理工作。 我有大约250,000行数据跨越几列,所以处理将花费几分钟的时间。 总是添加新的数据行,因此,要运行macros,B列的最后一行将被采用。 这样可以将下面的公式粘贴为x行。

Sub macro2() Dim lastrow As Long lastrow = Cells(Rows.Count, "B").End(xlUp).Row Range("J6:J" & lastrow).Formula = "GCDnm(D6,E6)" Range("K6:K" & lastrow).Formula = "LOOKUP(....)" End Sub 

有没有办法让这个代码更有效率? 例如,每次运行macros时,不要将公式从J6或K6粘贴到最后一行(J250000或K250000)? 有没有办法将J230000到J250000的公式贴上去呢?

是的你可以,你只需要检测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 

希望它的作品:)

由于评论部分的限制,我需要将其发布到答案部分。

好的,首先我想你想让公式从第6行开始。

如果使用.Formula函数,单元格内部的公式将是静态的(与在等号标记内写入的内容相同)。

有两种方法可以做到这一点:

首先,你可以使用从lastrowJ循环到lastrow像这样:

 For i = lastrowJ + 1 to lastrow Range("J" & i).Formula = "GCDnm(D" & i & ",E" & i)" Next 

为K列做同样的事情。

第二种方法是使用.Paste方法,其行为就像在Excel中手动复制和粘贴一样(行将自动增加以遵循所推荐的行)。示例:

 Range("J1").Select Selection.Copy Range("J" & lastrowJ+1 & ":J" & lastrow).Select ActiveSheet.Paste 

然而,后一种方法并没有反映出良好的编程习惯,而我更喜欢使用前面提到的方法而不是后者。