Копировать диапазон в зависимости от условия - PullRequest
2 голосов
/ 18 января 2020

Я хотел бы написать макрос для копирования только диапазона ячеек с данными и игнорирования ячеек со значением NA

Я создал вспомогательный инструмент, чтобы обеспечить сбор данных из нескольких источников. поместил в правильные соответствующие столбцы, затем я скопировал и вставил эти столбцы в мастер-лист. Диапазон, в котором эти значения заполняются, составляет от A3 до R, а в столбце R указано Vlookup.

Я хочу написать макрос, чтобы я мог нажать кнопку включения макроса, чтобы скопировать ячейки в этом диапазоне и закончить, где Vlookup прекращает возвращать значение. До сих пор я был в состоянии написать его, чтобы он копировал в конец Vlookup, но он все еще собирает результаты, включающие формулу в R.

В настоящее время написано:

Sub Copy()
    Dim ws As Worksheet
    Set ws = Sheets("Sheet1")
    ws.Range(ws.[A:R], ws.Cells(Rows.Count, "R").End(xlUp)).Copy
End Sub

1 Ответ

0 голосов
/ 18 января 2020

В одну сторону.

  1. Использовать автофильтр.
  2. Отфильтруйте значения, которые не являются #N/A
  3. Скопируйте отфильтрованный диапазон в один go.

Это то, что вы пытаетесь?

Option Explicit

Sub Sample()
    Dim ws As Worksheet
    Dim rng As Range, filteredrng As Range
    Dim lrow As Long

    Set ws = Sheet1 '<~~ Change this to the relevant sheet

    With ws
        .AutoFilterMode = False

        lrow = .Range("R" & .Rows.Count).End(xlUp).Row

        Set rng = .Range("A3:R" & lrow)

        With rng
           .AutoFilter Field:=18, Criteria1:="<>#N/A"
            Set filteredrng = .Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow
        End With

        If Not filteredrng Is Nothing Then
            '~~> COPY RANGE CODE HERE
        End If

        .AutoFilterMode = False
    End With
End Sub

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...