使用LastRow复制粘贴范围

时间:2017-01-15 13:33:05

标签: excel vba excel-vba excel-formula

我有一个问题,如果从A7开始直到LastRow行有数据,如何将公式从特定的指定范围复制到指定的FirstRow到LastRow。

如果从A7到LastRow有数据,则H6:J6中的公式应该作为公式从H7:J7粘贴到LastRow。

现在的问题是,从A7开始,行是空的,它会复制H5:J5中的公式。是否有我可以使用的代码,以便如果A7向前为空,则根本不会复制任何公式?也许将FirstRow定义为固定或其他东西。

Sub CopyFormulaIF()

Dim myLastRow As Long
Dim myCol As Long
Dim WB As Workbook
Dim WS As Worksheet

Set WB = ThisWorkbook
Set WS = WB.Sheets("Tabelle1")

'Screen update in 0 seconds
Application.ScreenUpdating = 0

With WS
    myLastRow = .Range("A" & .Rows.Count).End(xlUp).Row
End With

For myCol = 8 To 10                                              
    Cells(6, myCol).Copy                                        
    Range(Cells(7, myCol), Cells(myLastRow, myCol)).PasteSpecial Paste:=xlFormulas 
Application.CutCopyMode = False                             
Next myCol

End Sub

样品: enter image description here

非常感谢你们

1 个答案:

答案 0 :(得分:2)

你可以这样做

Option Explicit

Sub CopyFormulaIF()
    Dim myLastRow As Long
    Dim myCol As Long

    'Screen update in 0 seconds Application.ScreenUpdating = 0

    With ThisWorkbook.Sheets("Tabelle1")
        myLastRow = .Range("A" & .Rows.Count).End(xlUp).Row

        If myLastRow < 7 Then Exit Sub

        For myCol = 8 To 10
            .Range(.Cells(7, myCol), .Cells(myLastRow, myCol)).FormulaR1C1 = .Cells(6, myCol).FormulaR1C1
        Next
    End With
End Sub