#excel #vba
#excel #vba
Вопрос:
У меня есть диапазон ячеек (динамическое количество строк), который я хочу скопировать, начиная с ячейки A1. Приведенный ниже код у меня не работает, поскольку он не перемещает весь диапазон значений ячеек из текущего местоположения в A1. Пожалуйста, сообщите.
Range("E:E").Cut Range("A1")
Пример,
Если диапазон в E равен 50 строкам, вырезание и перемещение должны начинаться с A1 и заканчиваться на A50. Если диапазон в E равен 999 строкам, вырезание и перемещение должны начинаться с A1 и заканчиваться на A999.
Ответ №1:
Согласно вашему комментарию выше, смотрите приведенный ниже код:
Sub CutPaste()
Dim i As Long
Dim sRow As Long, eRow As Long
Dim ws As Worksheet
Set ws = Sheets("Sheet1")
'set the last row of data
eRow = ws.Range("E" amp; ws.Rows.Count).End(xlUp).Row
'find the start row of data
For i = 1 To eRow
If ws.Range("E" amp; i).Value <> "" Then
sRow = i
Exit For
End If
Next i
'now cut and paste
ws.Range("E" amp; sRow, "E" amp; eRow).Cut ws.Range("A1").Paste
'clear clipboard and object
Application.CutCopyMode = False
Set ws = Nothing
End Sub
Комментарии:
1. Спасибо за ваши комментарии. Хорошего дня.
Ответ №2:
Это должно сработать для вас:
Sub Kopy()
Dim N As Long
N = Cells(Rows.Count, "E").End(xlUp).Row
Range("E1:E" amp; N).Cut Range("A1")
End Sub
ПРИМЕЧАНИЕ:
Вам не нужно указывать те же размеры для назначения. Достаточно одной ячейки.
Перед:
и после:
Комментарии:
1. Спасибо за ваш ответ, но это не решило мою проблему. Причина в том, что мои данные начинаются с ячейки E10 (и являются динамическими по количеству строк). В приведенном выше методе он скопировал все в A10. Я хочу, чтобы он скопировался в A1.