Скопировать диапазон ячеек в новое местоположение

#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.