VBA Копировать последние 3 ячейки столбца - PullRequest
0 голосов
/ 26 февраля 2020

Есть ли способ, которым я могу скопировать последние 3 ячейки целого столбца? В этом случае столбец B? Спасибо!

Sub LastThree()

    Worksheets("DATA").Activate

    With Sheets("DATA")
        ' Adds titles to forecast columns
        .Range("I1").Value = "Production Forecast"
        .Range("J1").Value = "Demand Forecast"
        .Range("K1").Value = "Inventory Forecast"
    End With

    With Sheets("DATA")
        Worksheets("DATA").Activate
        .Range("B:B" - 3).Copy
    End With

End Sub

Ответы [ 2 ]

0 голосов
/ 26 февраля 2020

Вы можете использовать:

Option Explicit

Sub LastThree()

    Dim LastRow As Long
    Dim arrHeaders As Variant

    arrHeaders = Split("Production Forecast,Demand Forecast,Inventory Forecast", ",")

    With ThisWorkbook.Worksheets("DATA")

        LastRow = .Cells(.Rows.Count, "B").End(xlUp).Row

        ' Adds titles to forecast columns
        .Range("I1:K1").Value = Application.WorksheetFunction.Transpose(arrHeaders)

        .Range("B" & LastRow - 2 & ":B" & LastRow).Copy

    End With

End Sub
0 голосов
/ 26 февраля 2020

Поскольку вы используете блок With, вам не нужно использовать .Activate.

Сначала вы вычисляете последнюю строку, а затем вычитаете 3 при взятии первой ячейки:

Option Explicit
Sub LastThree()

    With Sheets("DATA")
    ' Adds titles to forecast columns
        .Range("I1") = "Production Forecast"
        .Range("J1") = "Demand Forecast"
        .Range("K1") = "Inventory Forecast"
        Dim LastRow As Long: LastRow = .Cells(.Rows.Count, 2).End(xlUp).Row
        .Range(.Cells(LastRow - 2, 2), .Cells(LastRow, 2)).Copy
    End With

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