我有两个相同的工作表,我想要获取多个列中相同的行(工作表总是63列,504行并且增加),我使用两个for循环来增加一行中的行然后将另一行中的所有行与该行进行比较,然后再次增加该行,并将另一行与该行ect进行比较。直到最后一行,然后是一个if循环,看看它们是否符合我的条件。问题是它需要花费太多时间(大约8分钟),我试图使用查找功能,但它失败了,因为它只能占用一个值。我添加了错误的screenupdating,计算和启用事件,甚至将状态栏更改为非常基本的以提高性能,但没有给我提供我想要的结果。
如何以任何可能的方式提高性能,新功能或其他任何方式?
PS有时一些条件并不重要,它取决于某些细胞的真实值或面值。
{{1}}
答案 0 :(得分:1)
您是否尝试过添加
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.DisplayAlerts = False
代码的开头,
Application.ScreenUpdating = True
Application.EnableEvents = True
Application.DisplayAlerts = True
在代码的最后?
这将关闭屏幕更新,事件和警报,从而加快运行时间。
此外,如果您决定采用该路线,则加载和卸载数组是最快的方法。
加载数组的示例:
Dim arr() As Variant ' let brackets empty, not Dim arr(1) As Variant !
For Each a In Range.Cells
' change / adjust the size of array
ReDim Preserve arr(1 To UBound(arr) + 1) As Variant
' add value on the end of the array
arr(UBound(arr)) = a.Value
Next
迭代数组以提取数据的示例:
For Each element In arr 'Each array element
do_something (element)
Next element