自动过滤然后复制和粘贴范围

时间:2017-12-06 01:39:18

标签: excel vba excel-vba copy-paste autofilter

我在下面写了一段代码。 意图是使用标准自动过滤列K,复制数据并将其粘贴在同一页面上最后一行下方的工作表底部。

我没有收到任何错误,但代码没有按预期工作。 它适用于自动过滤和复制,但它不会将数据粘贴到最后一行。 我可以请一些帮助。

Sub Depreciation_to_Zero()
With Sheets("Restaurant")
.AutoFilterMode = False
With .Range("k1", .Range("k" & .Rows.Count).End(xlUp))
    .AutoFilter Field:=1, Criteria1:="*HotDog*"
    On Error Resume Next
    .Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Copy
    .Cells(.Rows.Count, "A").End(xlUp).Row.Select.PasteSpecial xlPasteValues
    On Error GoTo 0
End With

.AutoFilterMode = False
End With
MsgBox ("Complete")
End Sub

1 个答案:

答案 0 :(得分:0)

试试这个版本

Option Explicit

Public Sub DepreciationToZero()

    Const FIND_VAL = "*HotDog*"

    Dim ws As Worksheet, lr As Long, result As String

    Set ws = Worksheets("Restaurant")
    Application.ScreenUpdating = False
    ws.AutoFilterMode = False
    lr = ws.Cells(ws.Rows.Count, "K").End(xlUp).Row
    result = FIND_VAL & " not found"

    With ws.UsedRange
        ws.Range("K1:K" & lr).AutoFilter Field:=1, Criteria1:=FIND_VAL
        If ws.Range("K1:K" & lr).SpecialCells(xlCellTypeVisible).CountLarge > 1 Then
            .Offset(1).Resize(lr - 1).SpecialCells(xlCellTypeVisible).Copy
            .Offset(lr).Cells(1).PasteSpecial xlPasteValues
            .Offset(lr).Cells(1).Select
            Application.CutCopyMode = False
            result = "All " & FIND_VAL & " rows copied"
        End If
    End With

    ws.AutoFilterMode = False
    Application.ScreenUpdating = True
    MsgBox result
End Sub