Благодарим за помощь заранее. Мне удалось создать макрос, который ищет столбец O листа под названием «ClientTradeDetails» для значения ячейки «True», и, если значение ячейки «True», оно занимает всю целую строку и вставляет ее в лист под названием «TrueValues», ,Необходимо ускорить код (копировать/вставлять с одного листа на другой)
Это работает, НО очень медленно. Как вы можете видеть, у меня есть 65536 строк данных на моем главном листе, чтобы пройти. Я думал, что проблема с копией/вставкой была проблемой, но я не знаю, как это изменить, чтобы избежать метода копирования. Любая помощь?
Sub MoveTrue()
Sheets("ClientTradeDetails").Select
Dim tfCol As Range, Cell As Object
Set tfCol = Range("O2:O439050") 'Substitute with the range '
For Each Cell In tfCol
If Cell.Value = "True" Then
Cell.EntireRow.Cut
Sheets("TrueValues").Select
ActiveSheet.Range("A65536").End(xlUp).Select
Selection.Offset(1, 0).Select
ActiveSheet.Paste
End If
Next
End Sub
Проблема в том, что у вас столько данных на одном листе excel, и вы ожидаете, что макрос наверстает упущенное решение по управлению данными. – DejaVuSansMono
Используйте метод [AutoFilter method] (https://msdn.microsoft.com/en-us/library/office/aa221844.aspx), чтобы отфильтровать значение true в одном столбце и передать массовые значения. При необходимости повторите для других столбцов. Вы в настоящее время ищете (для всех целей и задач) весь рабочий лист. Конечно, у вас есть только несколько столбцов, которые могут содержать true. – Jeeped
Что такое @Jeeped означает сказать, что я считаю заменой 'Cell.Entire.Cut' чем-то вроде' Intersect (UsedRange, Cell.EntireRow) .Cut'. Таким образом, вы копируете только нужные столбцы. Не вся строка (которая, вероятно, не заполняется во всех столбцах. Также см. [Избегать выбора] (http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros), Что значительно увеличит вашу скорость. Кроме того, в зависимости от количества значений AutoFitler может быть слишком медленным, но определенно быстрее, чем цикл всех этих строк. –