有一个文件,来自规定宏的数据книга2
进入其中книга3
不幸的是,可能由于文件中的大量和宏加载项,宏可能需要 10-20 分钟才能完成。尝试添加各种优化方案,但至今没有成功。
200 行或更多行的数据量和数量大约需要 6 列,但由于某种原因,该过程需要太长时间。我想可能的问题之一是我试图将此宏添加到进程中,以A:A
更改книга2
.
Function ifopen(w As String) As Boolean
On Error Resume Next
ifopen = Workbooks(w).Name <> ""
End Function
Public Sub hyfre1()
Application.ErrorCheckingOptions.BackgroundChecking = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Application.ScreenUpdating = False
Application.StatusBar = False
If ifopen("книга3") = False Then
Workbooks.Open "C:\Users\nshuvalov\Desktop\книга3.xlsm", ReadOnly:=True
End If
Dim LastRow As Long
Dim LastRow2 As Long
LastRow = Workbooks("книга2").Sheets("план").Cells(Rows.Count, 1).End(xlUp).Row
LastRow2 = Workbooks("книга3").Sheets("выручка").Cells(Rows.Count, 1).End(xlUp).Row
With Workbooks("книга2").Sheets("план")
For s = 2 To LastRow
For xx = 2 To LastRow2
If Workbooks("книга2").Sheets("план").Cells(s, 1) = Workbooks("книга3").Sheets("выручка").Cells(xx, 1) Then
Workbooks("книга3").Sheets("выручка").Cells(xx, 6).Copy
Workbooks("книга2").Sheets("план").Cells(s, 2).PasteSpecial xlPasteValues
Workbooks("книга3").Sheets("выручка").Cells(xx, 3).Copy
Workbooks("книга2").Sheets("план").Cells(s, 3).PasteSpecial xlPasteValues
Workbooks("книга3").Sheets("выручка").Cells(xx, 2).Copy
Workbooks("книга2").Sheets("план").Cells(s, 4).PasteSpecial xlPasteValues
Workbooks("книга3").Sheets("выручка").Cells(xx, 5).Copy
Workbooks("книга2").Sheets("план").Cells(s, 5).PasteSpecial xlPasteValues
End If
Next
Next
End With
Application.EnableEvents = True
Application.Calculation = xlCalculationAutomatic
Application.ScreenUpdating = True
Application.StatusBar = True
Application.ErrorCheckingOptions.BackgroundChecking = True
End Sub
在阵列上要快得多。我们仅引用工作表对象来接收数据并卸载结果。
如果两本书中的序号是升序的,那么你仍然可以加快速度——不是从第二个开始,而是从找到的最后一行开始查看嵌套循环。声明另一个变量并更改代码片段: