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

我一直在研究VBAmacros,将符合特定条件的数据从一个工作表复制到另一个工作表,而不更改原始工作表。

我从工作表“前景”中find最后一行并select我需要的标准,并将其复制到另一个工作表“结果”中,但两个工作表看起来都是相同的。

因此,任何不符合过滤条件的行都将从原始工作表“Prospects”中删除。

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

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 

第一:你的头衔很混乱; 是否要过滤工作表“前景”中的数据,复制可见数据,并将其移动到“结果”工作表? 第二:你“昏暗的范围”,但你不要在你的代码中使用它。 第三:你不要暗淡“LastRow”和“LastCol”,甚至不要在你的代码中使用它们。 第四:为什么在你隐藏特定的列之前先过滤“A列”,然后“过滤M列”,然后再隐藏它们? 第五:你的“LastCol”代码是错误的六:你隐藏和取消隐藏的列没有明显的原因。 第七:你的“与代码”没有任何意义,你正在testing“sheet1”,不复制任何东西,然后粘贴“sheet1”而不是“结果”表。 工作表是“表(1)”? 我build议你在“outlook”工作表上过滤数据使用.SpecialCells(xlCellTypeV‌​isible).Copyselect可见的数据,然后粘贴到“结果”工作表

这是我最终做的。

Sub ProspectList()

Dim ws As Worksheet Dim LastRow As Long

设置ws = ActiveSheet

(“A1:M”和LastRow)。“查找最后一行并将完整工作表复制到新工作表LastRow = ActiveSheet.Cells(Rows.Count,”A“)。复制目的地:=表格(“结果”)。范围(“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 

结束小组