Вставить из листа

Автор Screen, 08 октября 2022, 14:36

Screen

Добрый день! Не могу нигде найти информацию. Есть типовые листы (заявки) из них надо определенные ячейки перенести на отдельный лист. Можно ли сделать так, чтобы не писать код под каждую ячейку и лист, а просто выбрать активный лист, нажать на макрос и всё сразу загружалось? Я примерно представляю как это сделать, но не выходит. И чтобы каждый лист начинался с новой строки в таблице. Так же в исходных листах есть объединённые ячейки. Спасибо большое!
Вот то что я смогла сделать:
Worksheets("Лист 2").Range("F11:H11").Copy Worksheets("Отчёт").Range("N3")

   For Each rCell In Worksheets("Отчёт").Range("N3")
       rCell.UnMerge
   Next
   
Worksheets("Лист 2").Range("C12").Copy Worksheets("Отчёт").Range("O3")

   For Each rCell In Worksheets("Отчёт").Range("O3")
       rCell.UnMerge
   Next

Администратор

Написал вам два письма на почту с заголовком "Письмо с Форума по VBA, Excel и Word". Написал именно на почту, а не на форум.

Вместо Worksheets("Лист 2") пишите ActiveSheet:
ActiveSheet.Range("F11:H11").Copy Worksheets("Отчёт").Range("N3")

Screen

Я пыталась так сделать, но он не копирует ничего. Выделяет этот код желтым. Я только учусь, не понимаю что не так...

Screen

Всё получилось, разобралась. спасибо большое!

Screen

Как сделать, чтобы вставлялось в пустую ячейку этого столбца? вместо Worksheets("Отчёт").Range("N3")
Нашла вот это, но как использовать не понимаю:
Dim iLastRow As Long 
iLastRow = Cells(Rows.Count,2).End(xlUp).Row 
cells(iLastRow+1,2).Select

Администратор

End не ищет в скрытых строках.
Activesheet можно не указывать, можно сразу писать Range.

Sub Макрос()
   
    Dim r As Long
   
    r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Range("F11:H11").Copy Worksheets("Отчёт").Cells(r, "N")

End Sub

Screen

Снова ваша помощь нужна...
Ячейки, из которых я копирую, объединенные. А вставить нужно в 1 ячейку без объединения.
Пыталась разными способами, вот последние:
1)Range("A3:D8").MergeCells = False
2)Dim rCell As Range
   For Each rCell In Worksheets("Отчёт").Range("D3")
   rCell.UnMerge
Но проблема в том, что я не знаю в какую строку будет вставляться, тк будет заполняться следующая пустая.

Администратор

Если форматы (заливку ячеек, размер шрифта и тому подобное) копировать не надо, то можно не использовать метод Copy:
Sub Макрос()
   
    Dim r As Long
   
    r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "N").Value = Range("F11").Value

End Sub

Screen

извините, не вставляется ничего, пустые ячейки

Screen

Именно ваш код вставляет, но когда меняю на другие ячейки-ничего не работает

Администратор

Выложите код, который не вставляет.

Screen

Первые 4 кода работает, остальные нет
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "N").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "N").Value = Range("F11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "M").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "M").Value = Range("E11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "L").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "L").Value = Range("D11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "K").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "K").Value = Range("C11").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "J").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "J").Value = Range("G8").Value
   
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "I").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "I").Value = Range("C8").Value
   

Администратор

Этот код не вставляет:?
r = Worksheets("Отчёт").Cells(Worksheets("Отчёт").Rows.Count, "J").End(xlUp).Row + 1
    Worksheets("Отчёт").Cells(r, "J").Value = Range("G8").Value

Screen

да, верно код ниже тоже не вставляет

Администратор

Range("G8") объединённая ячейка?