Скопируйте последние 5 ячеек в столбце до последней строки - PullRequest
0 голосов
/ 22 мая 2019

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

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

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

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

Код, который повторяется 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

Ответы [ 2 ]

0 голосов
/ 22 мая 2019

Если вам нужны только значения (не формулы или форматирование), вы можете просто использовать 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
0 голосов
/ 22 мая 2019

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

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

Application.ScreenUpdating = False

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

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

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

For i = 1 to 300
    //All your code here
Next i
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...