Я написал код, который делает следующее:Копировать autofiltered диапазона, VBA первенствует
- относится автофильтр к конкретным
sheet
в выбранномworkbook
- копирует данные из
autofiltered range
кроме заголовка к другимworkbook
Адрес:
m = 2
For i = 1 To work_book.Worksheets.Count
With work_book.Sheets(i)
If (.UsedRange.Rows.Count > 1) Then
'apply filters
.UsedRange.AutoFilter field:=2, Criteria1:=array_of_account_numbers, Operator:=xlFilterValues
.UsedRange.AutoFilter field:=1, Criteria1:=array_of_debit_or_credits, Operator:=xlFilterValues
'select only visible cells after autofilter is applied
On Error Goto a
m = destination_workbook.Sheets(1).UsedRange.Rows.Count + 1
Intersect(.UsedRange, .UsedRange.Offset(1)).SpecialCells(xlCellTypeVisible).Copy destination_workbook.Sheets(1).Range("A" & m)
a:
End If
End With
Однако макрос настойчиво копирует некоторый мусор. Это означает, что он копирует с каждого sheet
первые три rows
в дополнение к autofiltered range
.
Как я могу решить эту проблему? Буду признателен за вашу помощь и ваши ответы.
РЕДАКТИРОВАТЬ
Вот пример данных в листе
фильтр применяется к факторам1 (<> 60, <> 50) и Criteria2 (<> 1470, < > 1450)
Благодарим за внимание. О 'Offset', мне нужно удалить заголовок из выбранного диапазона, поэтому я использовал значение 1. Что вы предлагаете вместо' .UsedRange'? – fsua
Вы все еще можете использовать 'UsedRange', просто увеличьте значение Offset, чтобы строки, находящиеся выше данных с автоматической фильтрацией, не были включены. – Stewbob
Это своего рода проблема, потому что я не так много строк выше выбранного диапазона =) – fsua