我正在尝试过滤工作表,并将结果复制到另一个工作表 . 有些列包含我不想复制的公式,因为除了这些列(填充了不同的公式)之外,目标表是空白的 . 我用一个单独的宏清除这些单元格的内容 . 免责声明;我对Excel VBA的了解来自于记录宏,stackoverflow和编码的女朋友,所以这可能看起来很粗糙 .

当我复制未过滤的范围并将其粘贴为值,跳过空白时,它可以完美地工作 . 一旦我过滤了范围并重复相同的步骤,它就不会"skip blanks",并覆盖公式 . Do I just need to create a helper sheet to paste the filtered range to, re-copy as a contiguous range, and then paste skipping blanks?

以下是我的代码,提前感谢您的帮助 .

Dim wb1 As Workbook
Dim wb2 As Workbook
Dim Sheet As Worksheet
Dim rng1 As Range
Dim rng2 As Range
Dim LastRow As Long

Set wb1 = ActiveWorkbook
LastRow = Cells(Rows.Count, "F").End(xlUp).Row


Sheets("Selection & Execution").Activate
Set Sheet = ActiveSheet
Set rng1 = ActiveSheet.UsedRange.Find("Selected?", , xlValues, xlWhole)
    With Sheet
            .Unprotect 
            .Cells.EntireRow.Hidden = False
            .Cells.EntireColumn.Hidden = False
            .Range("A4:EA20000").SpecialCells(xlCellTypeFormulas).ClearContents
            .Range("3:3").AutoFilter Field:=rng1.Column, Criteria1:= _
                "<>", Operator:=xlAnd
            .Range("A4", "EA" & LastRow).SpecialCells(xlCellTypeVisible).Copy

    End With

wb1.Activate
Sheets("Selection & Execution").Activate
Set rng2 = ActiveSheet.UsedRange.Find("Employee Number", , xlValues, xlWhole)

If rng2.Offset(1, 0) = "" Then
rng2.Offset(1, -5).Select
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
     :=True, Transpose:=False
wb2.Close SaveChanges:=False

Else
rng2.End(xlDown).Offset(1, -5).Select
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=True, Transpose:=False
wb2.Close SaveChanges:=False
End If