Я изменил свой макрос Excel, который до этого переходил по строке за строкой, и теперь он фильтрует результаты и копии навалом. Гораздо эффективнее.Excel VBA AutoFilter добавляет пустые строки
Проблема, которую я получаю сейчас, Автофильтр добавляет миллионы пустых строк в рабочий лист, и я не могу определить, почему он это делает.
CountryCodes - это словарь, который содержит значения для фильтра. Критерии ищут строки, содержащие запись из словаря.
Это код:
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 Filters, и я получаю тот же результат - пустые строки добавляются в конце. Это сводит меня с ума! – Bart
+1 для преобразования петли в автофильтр. Вы должны открыть исходные файлы и удалить все пустые строки, и вы увидите значительное уменьшение размера файла и более высокую производительность при обновлении данных. Выберите первую пустую строку (а не только одну ячейку) и нажмите Shift + Ctrl + стрелку вниз, затем ** не нажимайте клавишу «Удалить» **, вместо этого щелкните правой кнопкой мыши одну из выбранных строк и выберите «Удалить» из всплывающего окна –