如何将带有公式的可见(已过滤)行复制(或剪切)和粘贴到另一个工作表(VBA)?

时间:2017-07-21 11:28:16

标签: excel vba

从我的代码中可以看出,我正在移动(复制 - 因为我无法剪切和粘贴不是一个接一个的行的cos)只有可见行(在过滤后)到另一个工作表。

我遇到的问题是它们被粘贴为值,因此公式被杀死了。复制后我需要公式保留在新的工作表上。

Sub Step10()
Dim lLRow As Long

With Sheets("Sheet1")
    lLRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Range("B:B").AutoFilter Field:=1, Criteria1:="E-mail"
    .Range("B2:B" & lLRow).SpecialCells(xlCellTypeVisible).EntireRow.Copy Destination:=Sheets("Sheet2").Range("B" & Rows.Count).End(xlUp).Offset(1)
    .AutoFilterMode = False
End With

完成上述操作后,我使用以下代码从Sheet1中删除行(已复制的行)。您是否还可以建议是否可以将可见行从Sheet1剪切/粘贴到Sheet2(PS。我更喜欢使用过滤与循环相对,以根据特定单元格值识别要复制的行,因为循环需要很长时间超过10k行的数据)。

Sub Step10cont()
'Delteing Emails in B:B in Sheet1, as previous code used copy/paste special values due to discontinued ranges
Dim lLRow As Long
Application.ScreenUpdating = False

With Sheets("Sheet1")
    lLRow = .Cells(.Rows.Count, 1).End(xlUp).Row
    .Range("B:B").AutoFilter Field:=1, Criteria1:="E-mail"
    .Range("B2:B" & lLRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete xlShiftUp
    .AutoFilterMode = False
End With
Application.ScreenUpdating = True

0 个答案:

没有答案