将数据从一个工作表使用条件复制到另一个工作表,而无需更改原始工作表



我一直在研究一个VBA宏,以将与某些条件的数据从一个工作表复制到另一个工作表,而无需更改原始工作表。

我从工作表"潜在客户"中找到最后一行并选择我需要的条件,它会复制到另一个工作表"结果",但两个工作表看起来相同。

因此,任何不符合筛选条件的行都将从原始工作表"潜在客户"中删除。

我需要原始工作表保持不变。 我也只是捕获某些列,从而隐藏了"结果"工作表上不需要的列。

Sub ProspectList()
    Dim r As Range
    Dim ws As Worksheet
    Set ws = ActiveSheet
    ws.Range("A1").AutoFilter

    LastRow = ActiveSheet.Cells(Rows.Count, "A").End(xlUp).Row
    LastCol = ActiveSheet.Cells(1, Columns.Count).End(xlUp).Column
    With Sheets("Prospect List").Range([A2], [A2].SpecialCells(xlCellTypeLastCell))
        ws.Range("A1").AutoFilter field:=13, Criteria1:="Pipeline"
        [B:B].EntireColumn.Hidden = True
        .Copy
        [C:C].EntireColumn.Hidden = True
        .Copy
        [E:E].EntireColumn.Hidden = True
        .Copy
        [H:H].EntireColumn.Hidden = True
        .Copy
        [I:I].EntireColumn.Hidden = True
        .Copy
        [K:K].EntireColumn.Hidden = True
        .Copy
        [L:L].EntireColumn.Hidden = True
        .Copy
        [B:B].EntireColumn.Hidden = False
        [C:C].EntireColumn.Hidden = False
        [E:E].EntireColumn.Hidden = False
        [H:H].EntireColumn.Hidden = False
        [I:I].EntireColumn.Hidden = False
        [K:K].EntireColumn.Hidden = False
        [L:L].EntireColumn.Hidden = False
    End With
    With Sheets("Results")
        If .Cells(Sheets(1).Rows.Count, 1).End(xlUp) = "" Then 'it's a clean sheet
            .Cells(Sheets(1).Rows.Count, 1).End(xlUp).PasteSpecial Paste:=xlPasteValues
        Else
            .Cells(Sheets(1).Rows.Count, 1).End(xlUp).Offset(1).PasteSpecial Paste:=xlPasteValues
        End If
    End With
    Application.CutCopyMode = False
End Sub

首先:您的标题令人困惑; 是否要过滤工作表"潜在客户"上的数据,复制可见数据,然后将其移动到"结果"工作表?第二:你"将r Dim as Range",但你没有在代码中使用它。第三:你不要调暗"LastRow"和"LastCol",甚至不要在你的代码中使用它们。第四:为什么在隐藏特定列并隐藏它们之前,先过滤"A列"然后"过滤M列"?第五:你的"LastCol"代码是错误的六:您无缘无故地隐藏和取消隐藏列。第七:你的"使用代码"没有任何意义,你正在测试"sheet1",而不是复制任何东西,然后粘贴到"sheet1"而不是"结果"表上。哪个工作表是"工作表(1("?我建议您在"潜在客户"工作表上过滤数据,使用.SpecialCells(xlCellTypeV‌​isible).Copy选择可见数据,然后粘贴到"结果"工作表

这就是我最终所做的。

子潜在客户列表((

将 ws 调暗为工作表调暗最后一行有多长

设置 ws = 活动工作表

'找到最后一行并将完整的工作表复制到新工作表LastRow = ActiveSheet.Cells(Rows.Count, "A"(.End(xlUp(.row表("前景"(。范围("A1:M" & LastRow(.复制目的地:=工作表("结果"(。范围("A1"('将新的"结果"工作表设置为活动
工作表("结果"(。激活

'filter by criteria and hide columns not needed
With Sheets("Results")
    ws.Range("A1").AutoFilter Field:=13, Criteria1:="Pipeline"
    [B:B].EntireColumn.Hidden = True
    [C:C].EntireColumn.Hidden = True
    [E:E].EntireColumn.Hidden = True
    [H:H].EntireColumn.Hidden = True
    [I:I].EntireColumn.Hidden = True
    [K:K].EntireColumn.Hidden = True
    [L:L].EntireColumn.Hidden = True
    [M:M].EntireColumn.Hidden = True
End With
Application.CutCopyMode = False

结束子

相关内容

最新更新