粘贴从最后一行到参考行结尾的公式

时间:2014-01-06 08:22:04

标签: excel vba excel-vba

我正在使用excel进行某项处理工作。我有大约250,000行数据跨越几列,因此处理将花费几分钟。总是添加新的数据行,因此,为了运行宏,将采用列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

有没有办法让这段代码更有效率?例如,每次运行宏时,不是将公式从J6或K6粘贴到最后一行(J250000或K250000)?是否有办法将公式从J230000粘贴到J250000?

2 个答案:

答案 0 :(得分:1)

是的,你可以,你只需要检测J& A列的最后一行。 ķ

尝试这样的事情:

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

希望它有效:)

答案 1 :(得分:0)

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

好的,首先我认为你希望公式从第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

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