Мне нужно сделать отчет, запустив этот код с 3 параметрами I, j, k. Для меня пробегает от 1 до 5, j пробег от 1 до 8, k пробег от 0 до 12. С этим прогоном мне стоит примерно 8 минут, чтобы закончить этот прогон. , но я могу запустить до тысячи строк. как я могу оптимизировать этот код, чтобы работать быстрее?Оптимизация производительности копирования VBA
`Option Explicit
Sub CopySensMP()
Sheets("Sens By MP").Activate
Application.ScreenUpdating = False
Dim ts, te As Variant
ts = Time
Dim i, j, k As Integer
For k = 0 To Range("Tbl_Sens_Scenerio").Rows.Count - 1
For i = 1 To Range("Sens_MP_End")
Cells(i + 34 + k * Range("Sens_MP_End"), 15).Value = Range("Tbl_Sens_Scenerio").Cells(k + 1, 3).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 16).Value = Range("Tbl_Sens_Scenerio").Cells(k + 1, 4).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 17).Value = Range("Tbl_Sens_Scenerio").Cells(k + 1, 5).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 18).Value = Range("Tbl_Sens_Scenerio").Cells(k + 1, 6).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 19).Value = Range("Tbl_Sens_Scenerio").Cells(k + 1, 7).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 5) = Range("Tbl_Sens_Scenerio").Cells(k + 1, 2) & " - MP" & Application.WorksheetFunction.Text(i, "000")
For j = 1 To Range("Tbl_Sens_Plan").Count
Cells(i + 34 + k * Range("Sens_MP_End"), 5 + j).Value = Range("Tbl_Sens_MP").Cells(i, j).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 14).Value = Range("Tbl_Sens_Result").Cells(i, 8 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 20).Value = Range("Tbl_sens_result").Cells(i, 2 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 21).Value = Range("Tbl_sens_result").Cells(i, 3 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 22).Value = Range("Tbl_sens_result").Cells(i, 4 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 23).Value = Range("Tbl_sens_result").Cells(i, 5 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 24).Value = Range("Tbl_sens_result").Cells(i, 6 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 27).Value = Range("Tbl_sens_result").Cells(i, 7 + k * 10).Value
Cells(i + 34 + k * Range("Sens_MP_End"), 28).Value = Range("Tbl_sens_result").Cells(i, 1 + k * 10).Value
Next j
Next i
Next k
te = Time
Debug.Print te, ts
Application.ScreenUpdating = True
MsgBox "Done"
End Sub`
Добро пожаловать в переполнение стека! Этот вопрос может быть полезен для сестринского сайта Stack Overflow [Code Review.SE] (http://codereview.stackexchange.com/help/on-topic). – RJHunter
Сохраняет ли значение вашего диапазона ссылок (например, 'Sens_MP_End') статическое? – user3819867