Как использовать кнопку для перемещения диапазона содержимого ячейки в другой диапазон на листе - PullRequest
0 голосов
/ 19 февраля 2019

Каждый день я запускаю запрос, который заменяет данные в книге Excel на Листе1.Sheet2 - это отчет, в котором используются формулы для обобщения новых данных на Sheet1.Мне нужно начать отслеживать данные отчета на листе 3.Я хочу поместить на листе 2 кнопку, которую я могу нажать, чтобы переместить данные из C20: N20 на лист 2 и сохранить их в следующей доступной строке в столбцах B: M на листе 3.Я знаю, что могу просто записать макрос, захватить этот код и назначить его кнопке, но я не могу понять, как указать коду поиск следующей доступной строки.

Это неправильно, нопредставляет то, что я пытаюсь сделать, как я могу это исправить?

Sub Apv_Conv_TrendIt()
Dim LastRow As Long
LastRow = Sheets("Sheet3").Range("B1000000").End(xlUp).Row + 1: Sheets("Sheet3").Range("M1000000").End(xlUp).Row 1
Sheets("Sheet3").Range("B" & LastRow) = Sheets("Sheet2").Range("C20:N20")

End Sub

Ответы [ 3 ]

0 голосов
/ 19 февраля 2019

Есть несколько способов сделать это.Вот один из вариантов.

Sub CopyRange()
Worksheets("Sheet1").Range("A1:D20").Copy Worksheets("Sheet2").Range("A1")
End Sub

Теперь, если диапазоны будут меняться динамически, вы захотите сделать это более похожим на это.

Sub SelectFilledCells()
Range("A1", Range("A1").End(xlDown).End(xlToRight)).Select
End Sub

Посмотрите и на эти ссылки.

https://www.thespreadsheetguru.com/blog/2014/7/7/5-different-ways-to-find-the-last-row-or-last-column-using-vba

https://www.spreadsheetsmadeeasy.com/assign-button-macro/

0 голосов
/ 19 февраля 2019

Чтобы ответить на ваш вопрос.Сохранить просто

Создать кнопку на листе 2

Назначить кнопке новый макрос и поместить эту единственную строку кода между Sub и End Sub

Sheets("Sheet2").Range("C20:N20").Copy Destination:=Sheets("Sheet3").Cells(Rows.Count, 2).End(xlUp).Offset(1)
0 голосов
/ 19 февраля 2019

Вместо копирования / вставки попробуйте Передача значения

Sub Move()

Dim cRange As Range, LR As Long

With ThisWorkbook.Sheets("Sheet3")
    LR = .Range("B" & .Rows.Count).End(xlUp).Offset(1).Row
    Set cRange = ThisWorkbook.Sheets("Sheet2").Range("C20:N20")
    .Range(.Cells(LR, "B"), .Cells(LR, "M")).Value = cRange.Value
End With

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