как установить значения между листами после оператора IF, используя 2 последних строки

Я пытаюсь скопировать и вставить все значения столбцов из листа с именем Hey в другие столбцы на листе с именем final.

Я не хочу использовать опцию копирования, вставки или выбора, но мой код копирует только первую строку.

IntLastRow = Sheets("Hey").Cells(Cells.Rows.Count, "A").End(xlUp).Row
' IntRLastRow = Sheets("Interdiction Review").Cells(Cells.Rows.Count, "A").End(xlUp).Row

If Sheets("Hey").Range("H2") = "" Then
    Sheets("Final").Range("A2").Value = Sheets("Hey").Range("G2:G" & IntLastRow).Value
ElseIf Sheets("Hey").Range("H2") <> "" Then
    Sheets("Final").Range("A2").Value = Sheets("Hey").Range("H2:H" & IntLastRow).Value
EndIf

может ты знаешь, что я делаю не так?

Мне нужно скопировать даты из двух или более столбцов в другой столбец, расположенный на другом листе.

Однако я не уверен, смогу ли я использовать две последние строки в одной строке. Я пробую этот код, но вставляю только значение одной строки.

intrlastrow = Sheets("Final").Cells(Cells.Rows.Count, "A").End(xlUp).Row + 1
 
 Debug.Print intrlastrow
    If Sheets("Hey").Range("AJ2") = "" Then
            Sheets("Final").Range("A" & intrlastrow, "A" & IntLastRow).Value = Sheets("Hey").Range("AI2:AI" & IntLastRow).Value
        ElseIf Sheets("Hey").Range("AJ2") <> "" Then
            Sheets("Final").Range("A" & intrlastrow, "A" & IntLastRow).Value = Sheets("Hey").Range("AJ2:AJ" & IntLastRow).Value
        End If

Мне нужно добавить значения 2 или более столбцов из листа с именем HEY в тот же столбец на целевом листе (последний лист)

1 ответ

Решение

Если диапазон, из которого вы пытаетесь вставить значения, не равен тому, из которого вы их берете, будут скопированы только подходящие данные. Измените свой код на что-то вроде

Option Explicit

Sub test()
    Dim IntLastRow As Long
    
    IntLastRow = Sheets("Hey").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    ' IntRLastRow = Sheets("Interdiction Review").Cells(Cells.Rows.Count, "A").End(xlUp).Row
    
    If Sheets("Hey").Range("H2") = "" Then
        Sheets("Final").Range("A2:A" & IntLastRow).Value = Sheets("Hey").Range("G2:G" & IntLastRow).Value
    ElseIf Sheets("Hey").Range("H2") <> "" Then
        Sheets("Final").Range("A2:A" & IntLastRow).Value = Sheets("Hey").Range("H2:H" & IntLastRow).Value
    End If
End Sub

должен сделать свое дело.

Вы, наверное, заметили, что я изменился Sheets("Final").Range("A2") к Sheets("Final").Range("A2:A" & IntLastRow), аналогично тому, что вы сделали, чтобы решить, из какого диапазона копировать значения.

Другие вопросы по тегам