это мой первый пост после бесконечной попытки в течение 2 недель подряд.
Итак, у меня есть эти мега файлы Excel, содержащие почти 600 000 строк. Я должен вычислить среднее значение определенных значений в моем листе (при определенных условиях), проходя через столбец (второй). Мне нужно l oop моей программы с временем l oop как минимум 630 000 раз. За исключением случаев, когда я запускаю макрос, он автоматически говорит: Excel не отвечает .. и он остается таким в течение нескольких часов. Самый длинный промежуток времени, в течение которого я запускал его, составлял 11 часов, не касаясь ничего ... Я все еще не отвечал ... Забавно то, что, когда я уменьшаю количество циклов только для проверки, это очень быстро, когда я делаю это для 10 000 раз, но он снова блокируется около 35 000.
Вот мой код:
Dim rw As Long
Dim erw As Long
rw = 3
erw = 631000
Dim r As Long
Dim i As Long
Dim somme As Long
For r = 1 To 200
i = 0
somme = 0
Do While rw < erw
If IsNumeric(Cells(rw, 7)) = True Then
If Cells(rw, 2) = r And Cells(rw, 7) <> 0 Then
c = Cells(rw, 7).Value
somme = somme + c
i = i + 1
End If
rw = rw + 1
End If
Loop
If i <> 0 Then
Cells(r + 2, 8).Value = somme / i
End If
Next
End Sub
Я действительно пытался добавить следующее после предложений на этом сайте:
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.AskToUpdateLinks = False
Application.DisplayAlerts = False
Application.Calculation = xlAutomatic
ThisWorkbook.Date1904 = False
ActiveWindow.View = xlNormalView
Но он все еще не работал. Если кто-нибудь может помочь мне с этим, я был бы чрезвычайно благодарен. Это мой первый код VBA, и я знаю, что могу сделать это без макроса, но мой начальник настаивает на том, чтобы я делал это таким образом ...
Большое спасибо.