Копирование фиксированного диапазона ячеек вниз по пустому столбцу до последней строки данных в другом столбце - PullRequest
0 голосов
/ 01 апреля 2020

У меня есть лист (Sheet1) с 4 столбцами (A: D). В столбце A содержится более 1000 строк данных, а столбец D пуст. На Листе 2 у меня есть диапазон, который называется Индикаторы (B2: B11), который мне нужно скопировать в столбец D на Листе 1 и повторить процесс в следующей пустой ячейке в столбце D вплоть до последней строки данных в столбце A. это код, который я использовал для копирования диапазона в столбец D, но мне трудно повторить процесс до конца, так как я не уверен, как использовать LastRow в этом контексте.

Sub FillDownIndicators()
    Dim LastRow As Long
    LastRow = Sheet7.Cells(Rows.Count, 1).End(xlUp).Row

    Sheet3.Range("Indicators").Copy
    Sheet7.Range("D2").PasteSpecial Paste:=xlPasteValues
End Sub

Короче говоря, один раз диапазон копируется в столбец D (10 строк), его необходимо снова скопировать в следующую пустую строку в столбце D, пока не будет достигнута последняя строка в столбце A. Кто-нибудь может помочь?

Ответы [ 2 ]

0 голосов
/ 01 апреля 2020

попытки вставить специальное содержимое n ячеек в m ячеек не заполнили бы весь требуемый диапазон

, поэтому я придумал следующий

Option Explicit

Sub FillDownIndicators()
    Dim LastRow As Long

    With Sheet7
        LastRow = .Cells(.Rows.Count, 1).End(xlUp).Row
        With .Range("D2:D" & LastRow)
            .ClearContents
            .Resize(Sheet3.Range("Indicators").Rows.Count).Value = Sheet3.Range("Indicators").Value
            With .SpecialCells(xlCellTypeBlanks)
                .FormulaR1C1 = "=R[-" & Sheet3.Range("Indicators").Rows.Count & "]C"
                .Value = .Value
            End With
        End With
    End With
End Sub

, более компактную версию которого будет:

Sub FillDownIndicators()
    With Sheet7.Range("D2:D" & Sheet7.Cells(Rows.Count, 1).End(xlUp).Row)
        .ClearContents
        .Resize(Sheet3.Range("Indicators").Rows.Count).Value = Sheet3.Range("Indicators").Value
        With .SpecialCells(xlCellTypeBlanks)
            .FormulaR1C1 = "=R[-" & Sheet3.Range("Indicators").Rows.Count & "]C"
            .Value = .Value
        End With
    End With
End Sub
0 голосов
/ 01 апреля 2020

Просто используйте переменную LastRow для построения этого диапазона

Sheet7.Range("D2:D" & LastRow).PasteSpecial Paste:=xlPasteValues
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...