我一直在研究一个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(xlCellTypeVisible).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
结束子