Jack Famous, благодарю за оптимизацию и напутствие, механизм работает уже лучше :)
| Код |
|---|
Sub clean() ' очистка ненужных и пустых строк
For Each x In Array(1, 2, 3, 6) ' номера столбцов A, B, C и F
Columns(x).Delete
Next x
Rows(2).Delete ' удалить 2 строку
LastRow = ActiveSheet.UsedRange.Row - 1 + ActiveSheet.UsedRange.Rows.Count 'определяем размеры таблицы
Application.ScreenUpdating = False
For r = LastRow To 1 Step -1 ' проходим от последней строки до первой
If Application.CountA(Rows(r)) = 0 Then Rows(r).Delete ' если в строке пусто - удаляем ее
Next r
End Sub
Sub filter() ' применение фильтра по столбцам
Range("A1:F1").Select
Selection.AutoFilter
ActiveSheet.Range("$A$1:$F$1000").AutoFilter Field:=1, Criteria1:=Array("5", _
"Ёмкость", "Здоровье", "Имя Компьютера", "Логический Диск", "Модель Жёсткого Диска" _
, "Номер Жёсткого Диска", "Приблизительно осталось", "Производительность", _
"Серийный Номер Диска"), Operator:=xlFilterValues
End Sub
Sub format() ' конечное форматирование
Columns("A:A").ColumnWidth = 25
Columns("B:B").ColumnWidth = 25
Columns("C:C").ColumnWidth = 15
Columns("D:D").ColumnWidth = 5
Columns("E:E").ColumnWidth = 5
Range("A:E").HorizontalAlignment = xlLeft
End Sub
Sub process_from_good_guys() ' последовательное выполнение макросов
Dim AC&
Application.ScreenUpdating = False
AC = Application.Calculation
Application.Calculation = xlCalculationManual
sheetsToProcess = Array("1", "2", "3", "4", "5", "6", "7", "8", "9", "10", "11", "12", "13", "14", "15", "16", "17", "18", "19", "20", "21")
For Each aSheet In sheetsToProcess
ThisWorkbook.Sheets(aSheet).Activate
clean
filter
format
Next aSheet
Application.Calculation = AC
Application.ScreenUpdating = True
End Sub
|