-4
感谢您提前给予帮助。我设法创建了一个宏,它在名为“ClientTradeDetails”的工作表的O列中搜索单元格值“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方法](https://msdn.microsoft.com/en-us/library/office/aa221844.aspx)在一列上过滤true并批量传输值。如果需要的话,重复其他列。您目前正在搜索(针对所有意图和目的)整个工作表。当然,你只有几列可能包含真实的。 – Jeeped
@Jeeped的意思是说我认为用'Intersect(UsedRange,Cell.EntireRow).Cut'这样的东西代替'Cell.Entire.Cut'。这样你只需复制需要的列。不是整行(可能没有填充所有列。另请参阅[避免选择](http://stackoverflow.com/questions/10714251/how-to-avoid-using-select-in-excel-vba-macros )。这会大大增加你的速度,而且,根据AutoFitler值的数量也可以减慢,但肯定比循环所有这些行快。 –