Как ускорить работу макроса по сбору данных с помощью регулярных выражений? - VB

Узнай цену своей работы

Формулировка задачи:

Добрый вечер!
Помогите, пожалуйста, подскажите как можно ускорить работу моего макроса, как оптимизировать, очень долго работает.
В таблице с масками примерно 150 масок и таких таблиц 4, а данные, которые обрабатываю содержат в районе 80 000 строк.
Разбираю файл остатки на счете, и по маскам разбрасываю по группам приход/расход, суммируя итоговые суммы по маскам одной группы. этот кусок для прихода и подобный для расхода.
Листинг программы
  1. i = kol_maska
  2. reDtF.Pattern = ThisWorkbook.Worksheets().Cells(i, )
  3. reKtF.Pattern = ThisWorkbook.Worksheets().Cells(i, )
  4. reDtF.IgnoreCase = True
  5. reDtF.Global = True
  6. reKtF.IgnoreCase = True
  7. reKtF.Global = True
  8. reDtGO.Pattern = ThisWorkbook.Worksheets().Cells(i, )
  9. reKtGO.Pattern = ThisWorkbook.Worksheets().Cells(i, )
  10. reDtGO.IgnoreCase = True
  11. reDtGO.Global = True
  12. reKtGO.IgnoreCase = True
  13. reKtGO.Global = True
  14. sumGO =
  15. sumF =
  16. j = konec
  17. ThisWorkbook.Worksheets().Cells(j, ) <> _
  18. ThisWorkbook.Worksheets().Cells(j, ) = _
  19. (ThisWorkbook.Worksheets().Cells(j, ), , ) <> _
  20. reDtF.Test(ThisWorkbook.Worksheets().Cells(j, ).Value) _
  21. reKtF.Test(ThisWorkbook.Worksheets().Cells(j, ).Value)
  22. sumF = sumF + CDbl(ThisWorkbook.Worksheets().Cells(j, ).Value)
  23. ThisWorkbook.Worksheets().Cells(j, ) <> _
  24. ThisWorkbook.Worksheets().Cells(j, ) = _
  25. (ThisWorkbook.Worksheets().Cells(j, ), , ) = _
  26. reDtGO.Test(ThisWorkbook.Worksheets().Cells(j, ).Value) _
  27. reKtGO.Test(ThisWorkbook.Worksheets().Cells(j, ).Value)
  28. sumGO = sumGO + CDbl(ThisWorkbook.Worksheets().Cells(j, ).Value)
  29.  
  30. j
  31. q =
  32. sumF <> sumGO <>
  33. ThisWorkbook.Worksheets().Cells(q, ) <>
  34. ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, ) _
  35. ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, )
  36. ThisWorkbook.Worksheets().Cells(q, ) = CDbl(ThisWorkbook.Worksheets().Cells(q, ).Value) + sumF
  37. ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, ) _
  38. ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, )
  39. ThisWorkbook.Worksheets().Cells(q, ) = CDbl(ThisWorkbook.Worksheets().Cells(q, ).Value) + sumGO
  40.  
  41. q = q +
  42.  
  43. i

Решение задачи: «Как ускорить работу макроса по сбору данных с помощью регулярных выражений?»

textual
Листинг программы
  1. <font color="#00AA00">' {skipped}</font>
  2. <font color="blue">With</font> .Worksheets(<font color="teal">"Свод"</font>)
  3. lENDSvod = .Cells(.Rows.Count, <font color="darkblue"><b>2</b></font>).<font color="blue">End</font>(xlUp).Row
  4. avSvodArr = Range(.Cells(<font color="darkblue"><b>1</b></font>, <font color="darkblue"><b>1</b></font>), .Cells(lENDSvod, <font color="darkblue"><b>5</b></font>)).Value
  5. <font color="blue">End</font> <font color="blue">With</font>
  6. <font color="#00AA00">' {skipped}</font>

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

8   голосов , оценка 4.375 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы