VBA - Выбрать конкретную колонку - PullRequest
0 голосов
/ 22 февраля 2019

Я ищу альтернативу этому коду.Мне нужно выбрать только 1-й и 5-й столбец

Sub Copy()
        Dim Source As Worksheet
        Dim Target As Worksheet
        Dim valsArray As Variant

        valsArray = Array("A,B,C") '<--| define your values to be filtered on Source sheet column A
        ' Change worksheet designations as needed
        Set Source = ActiveWorkbook.Worksheets("Sheet1")
        Set Target = ActiveWorkbook.Worksheets("Sheet2")

        With Source  '<--| reference Source sheet
            With .Range("A1:A1000")  '<--| reference its range from A1 to A1000
                .AutoFilter Field:=1, Criteria1:=valsArray, Operator:=xlFilterValues   '<--| filter referenced range on its first column with values stored in valsArray
                If Application.WorksheetFunction.Subtotal(103, .Cells) > 1 Then '<--| if any cell filtered other than
                    .Resize(.Rows.Count - 1, 5).Offset(1).SpecialCells(xlCellTypeVisible).Copy Target.Range("A1") '<--|copy filtered cells skipping headers and paste in target sheet from cell A1
                End If
            End With
            .AutoFilterMode = False
        End With
    End Sub

здесь, в этой части, я написал .Resize(.Rows.Count - 1, 5), который выбирает от 1-го столбца до 5-го столбца, но мне нужен только 1-й и 5-й столбец.

есть ли способ получить только эти столбцы?

Спасибо

1 Ответ

0 голосов
/ 22 февраля 2019

Используйте 2 отдельные строки. Изменить размер в A1 и B1

  .Resize(.Rows.Count - 1, 1).Offset(1, 0).SpecialCells(xlCellTypeVisible).Copy Target.Range("A1")
  .Resize(.Rows.Count - 1, 1).Offset(1, 4).SpecialCells(xlCellTypeVisible).Copy Target.Range("B1")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...