Скопируйте последние 5 ячеек в столбце до последней строки

У меня есть текстовая система с именами людей, и мне нужно скопировать и вставить первые 4 ячейки (не проблема) и последние 5 ячеек на другой лист для анализа.

Проблема возникает при переносе из текстовой системы, в которой представлены данные, в электронную таблицу, когда речь идет о людях с пробелами в фамилии (например, Da Silva). Я использую текст для столбцов, что даст мне столбцы с вариантами номеров, в зависимости от количества пробелов в имени, которое является проблемой.

У меня уже есть грубое решение, но время, которое требуется, и прыжки между экранами во время работы макроса выглядят очень непрофессионально. У меня не так много свободного времени на работе, и у меня нет инструментов, чтобы правильно проверить это дома.

Может ли кто-нибудь помочь мне заставить это зацикливаться до последней пустой ячейки и немного привести ее в порядок?

Код, который повторяется 300 раз, выглядит следующим образом:

Sheets("Late list Sorting").Select
Range("A2").End(xlToRight).Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, -5)).Select
Selection.Copy
Sheets("Late list").Select
Range("D4").Select
ActiveSheet.Paste

(...Repeat until...)

Range("A300").End(xlToRight).Select
Range(ActiveCell.Offset(0, 0), ActiveCell.Offset(0, -5)).Select
Selection.Copy
Sheets("Late list").Select
Range("D302").Select
ActiveSheet.Paste
Sheets("Late list Sorting").Select

Не могли бы вы предоставить изображение или ожидаемый результат?

Error 1004 22.05.2019 14:05
3 метода стилизации элементов HTML
3 метода стилизации элементов HTML
Когда дело доходит до применения какого-либо стиля к нашему HTML, существует три подхода: встроенный, внутренний и внешний. Предпочтительным обычно...
Формы c голосовым вводом в React с помощью Speechly
Формы c голосовым вводом в React с помощью Speechly
Пытались ли вы когда-нибудь заполнить веб-форму в области электронной коммерции, которая требует много кликов и выбора? Вас попросят заполнить дату,...
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Стилизация и валидация html-формы без использования JavaScript (только HTML/CSS)
Будучи разработчиком веб-приложений, легко впасть в заблуждение, считая, что приложение без JavaScript не имеет права на жизнь. Нам становится удобно...
Flatpickr: простой модуль календаря для вашего приложения на React
Flatpickr: простой модуль календаря для вашего приложения на React
Если вы ищете пакет для быстрой интеграции календаря с выбором даты в ваше приложения, то библиотека Flatpickr отлично справится с этой задачей....
В чем разница между Promise и Observable?
В чем разница между Promise и Observable?
Разберитесь в этом вопросе, и вы значительно повысите уровень своей компетенции.
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Что такое cURL в PHP? Встроенные функции и пример GET запроса
Клиент для URL-адресов, cURL, позволяет взаимодействовать с множеством различных серверов по множеству различных протоколов с синтаксисом URL.
0
1
88
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

неэффективно использовать .Select, вот отличный ресурс: Как избежать использования Select в Excel VBA

Чтобы устранить мигание экрана, поместите это в начало кода. Не забудьте вернуть его в true в конце.

Application.ScreenUpdating = False

Вы хотите использовать цикл, в котором переменная i становится номером строки, на которую вы будете ссылаться, например:

 Range("A" & i).Value... 

Есть много способов зацикливания, вот один пример:

For i = 1 to 300
    //All your code here
Next i

Спасибо за ваш ответ, этот совет по обновлению экрана действительно полезен.

Conor 22.05.2019 16:10
Ответ принят как подходящий

Если вам нужны только значения (а не формулы или форматирование), вы можете просто использовать Value=Value...

Dim i As Long, sWs As Excel.Worksheet, tWs As Excel.Worksheet
Set sWs = ThisWorkbook.Worksheets("Late list Sorting")
Set tWs = ThisWorkbook.Worksheets("Late list")
For i = 2 To 300
    tWs.Range(tWs.Cells(i + 2, 4), tWs.Cells(i + 2, 8)).Value = sWs.Range(sWs.Cells(i, 1).End(xlToRight), sWs.Cells(i, 1).End(xlToRight).Offset(0, -5)).Value
Next

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