【发布时间】:2015-09-04 01:21:07
【问题描述】:
我已经修改了我的 Excel 宏,之前它是逐行进行的,现在它会批量过滤结果和副本。效率更高。
我现在遇到的问题是,自动过滤器将数百万个空行添加到工作表中,我无法确定它为什么这样做。
CountryCodes 是一个包含过滤器值的字典。 Criteria 正在查找包含字典中的条目的行。
这是代码:
For Each vall In CountryCodes
thisWB.Activate
thisWB.Sheets("Overall Numbers").Activate
lookfor = CountryCodes.Item(vall)
rep = Replace(thisWBName, "EMEA", lookfor)
Set rng = ActiveSheet.Range("A1:Z1")
FilterField = WorksheetFunction.Match("Host", rng.Rows(1), 0)
If ActiveSheet.AutoFilterMode = False Then rng.AutoFilter
rng.AutoFilter Field:=FilterField, Criteria1:="=*" & lookfor & "*", Operator:=xlFilterValues
Set rng2 = ThisWorkbook.Worksheets("Overall Numbers").Cells.SpecialCells(xlCellTypeVisible)
rng2.Copy Workbooks(rep).Worksheets("Overall Numbers").Range("A1")
Workbooks(rep).Save
thisWB.Activate
thisWB.Sheets("Overall Numbers").Activate
Cells.AutoFilter
Next
【问题讨论】:
-
我也尝试使用 Excel 过滤器添加过滤器,我得到了相同的结果 - 最后添加了空行。这让我抓狂!
-
+1 用于将循环转换为自动筛选。您应该打开初始文件并删除所有空行,您会发现文件大小显着减小,更新数据时性能更快。选择第一个空行(不仅仅是单个单元格)并按 Shift+Ctrl+向下箭头,然后不要按 Delete 键,而是右键单击其中一个选定行并从弹出窗口