复制并粘贴行和列(带公式)并粘贴到VBA中的最后一行

时间:2016-03-15 15:10:55

标签: excel vba excel-vba

首先,我有多张带有值和公式的表格。我已经使用VBA来提取干净的数据,这是正常的。例如“Sheet1”,从第3行到第100行,从第H行到第K列是我有值的地方。现在,我在第3行和B列到F的公式中链接到列H到K的值。我在复制第3行并将公式粘贴到工作表的最后一行时遇到问题。

其次,我有12个工作表。它们具有不同的值和公式来自“表1”。但我希望同样的动作适用于所有12张纸,如“纸张1”。

以下是我用来复制和粘贴我的值的代码(但它只复制了一行。我希望它能转到工作表底部):

Sub formula_format (data_sheet As String, row_num_start As Integer, column_num_start As Integer, row_num_end As Integer, column_num_end As Integer)

Sheets(data_sheet).Select

 For Row = row_num_start To row_num_end

    If Cells(Row, column_num_start).Value2 = "" Then

       Range(Cells(Row - 1, column_num_start), Cells(Row - 1, column_num_end)).Copy
       ActiveSheet.Cells(Row, column_num_start).Select
       ActiveCell.PasteSpecial Paste:=xlPasteFormulas, Operation:=xlNone, SkipBlanks:=False, Transpose:=False
       ActiveCell.PasteSpecial Paste:=xlPasteFormats, Operation:=xlNone, SkipBlanks:=False, Transpose:=False

       Exit For

    End If

Next Row

End Sub

此代码复制第一行并将其粘贴到下一行。我需要继续写完最后一行。

提前致谢。对不起,很长的帖子。这是我的第一篇文章!

1 个答案:

答案 0 :(得分:4)

除了上面的评论之外,我还想提供一种替代方法,如果我正确理解你要做的事情,那么这种方法更简单,更快速,更容易维护(在给定长度的列中复制公式)行)。

Sub formula_format(data_sheet As String, row_num_start As Integer, column_num_start As Integer, row_num_end As Integer, column_num_end As Integer)

With Sheets(data_sheet)

    .Range(.Cells(row_num_start, column_num_start), .Cells(row_num_start, column_num_end)).AutoFill _
        Destination:=.Range(.Cells(row_num_start, column_num_start), .Cells(row_num_end, column_num_end))

End With


End Sub