【发布时间】:2018-06-12 22:19:14
【问题描述】:
我有一个大文件作为脏数据出现,需要清理。一些数据是混合的,所以需要一个高级过滤器只显示“狗”,然后只复制可见单元格(列范围),将它们粘贴到指定列(在标题下方的第一个可见空白单元格上)清除过滤器并重复在下一列。这些需要搜索“狗”的列每 7 列出现一次。即 A1、H1、O1 等。我有以下脚本,我一直在使用它来尝试获得我正在寻找的结果。
2 个问题: 1)当它为第 410 列执行过滤器时,它应该只复制可见单元格,但在粘贴之后,当整个表格未过滤时,它实际上包括隐藏单元格。 2) 如果此脚本执行预期的操作,由于此操作需要在 50 列上执行,因此多次使用 select 会非常慢。
感谢任何帮助! 谢谢
Sub CopyPaste()
ActiveSheet.Range("$A$1:$API$65536").AutoFilter Field:=403, Criteria1:= _
"=*Dog*", Operator:=xlAnd
Range("OM2:ABP65536").SpecialCells(xlCellTypeVisible).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
Dim Rng As Variant
Range("ABQ1").Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Cells(1).Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets("clean_report").AutoFilter.Sort.SortFields.Clear
ActiveSheet.ShowAllData
ActiveSheet.Range("$A$1:$API$65536").AutoFilter Field:=410, Criteria1:= _
"=*Dog*", Operator:=xlAnd
Range("OT2:ABP65536").SpecialCells(xlCellTypeVisible).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Cut
Range("ABQ1").Offset(1, 0).Select
Range(Selection, Selection.End(xlDown)).Select
Selection.SpecialCells(xlCellTypeVisible).Cells(1).Select
ActiveSheet.Paste
ActiveWorkbook.Worksheets("clean_report").AutoFilter.Sort.SortFields.Clear
ActiveSheet.ShowAllData
End Sub
【问题讨论】: