Код Excel VBA: как скопировать отфильтрованные данные в Excel

Вот фрагмент кода 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:

  1. Используйте метод AutoFilter, чтобы применить фильтр к диапазону, затем скопируйте видимые ячейки в целевой диапазон с помощью метода SpecialCells(xlCellTypeVisible).
  2. Пройдитесь по каждой ячейке диапазона, проверьте, соответствует ли она критериям фильтра, и скопируйте совпадающие ячейки в целевой диапазон.
  3. Используйте метод AdvancedFilter, чтобы выполнить более сложную операцию фильтрации и скопировать отфильтрованные данные в целевой диапазон.