Вот фрагмент кода Excel VBA, который копирует отфильтрованные данные:
Sub CopyFilteredData()
Dim wsSource As Worksheet
Dim wsDestination As Worksheet
Dim rngSource As Range
Dim rngDestination As Range
Dim filterRange As Range
Dim cell As Range
' Set the source and destination worksheets
Set wsSource = ThisWorkbook.Worksheets("Sheet1") ' Replace "Sheet1" with your source sheet name
Set wsDestination = ThisWorkbook.Worksheets("Sheet2") ' Replace "Sheet2" with your destination sheet name
' Set the range to be filtered
Set filterRange = wsSource.Range("A1:D10") ' Replace with your desired range
' Apply filter to the range
filterRange.AutoFilter Field:=1, Criteria1:="FilterCriteria" ' Replace Field:=1 and Criteria1 with your desired filter criteria
' Set the source range to the visible cells after filtering
Set rngSource = filterRange.SpecialCells(xlCellTypeVisible)
' Set the destination range to copy the filtered data
Set rngDestination = wsDestination.Range("A1") ' Replace with your desired destination range
' Copy the filtered data
rngSource.Copy rngDestination
End Sub
Этот код VBA устанавливает фильтр для указанного диапазона на исходном листе и копирует видимые ячейки после фильтрации на целевой лист.
Вот несколько способов копирования отфильтрованных данных в Excel с помощью VBA:
- Используйте метод
AutoFilter, чтобы применить фильтр к диапазону, затем скопируйте видимые ячейки в целевой диапазон с помощью методаSpecialCells(xlCellTypeVisible). - Пройдитесь по каждой ячейке диапазона, проверьте, соответствует ли она критериям фильтра, и скопируйте совпадающие ячейки в целевой диапазон.
- Используйте метод
AdvancedFilter, чтобы выполнить более сложную операцию фильтрации и скопировать отфильтрованные данные в целевой диапазон.