Как ускорить работу макроса по сбору данных с помощью регулярных выражений? - VB
Формулировка задачи:
Добрый вечер!
Помогите, пожалуйста, подскажите как можно ускорить работу моего макроса, как оптимизировать, очень долго работает.
В таблице с масками примерно 150 масок и таких таблиц 4, а данные, которые обрабатываю содержат в районе 80 000 строк.
Разбираю файл остатки на счете, и по маскам разбрасываю по группам приход/расход, суммируя итоговые суммы по маскам одной группы. этот кусок для прихода и подобный для расхода.
Помогите, пожалуйста, подскажите как можно ускорить работу моего макроса, как оптимизировать, очень долго работает.
В таблице с масками примерно 150 масок и таких таблиц 4, а данные, которые обрабатываю содержат в районе 80 000 строк.
Разбираю файл остатки на счете, и по маскам разбрасываю по группам приход/расход, суммируя итоговые суммы по маскам одной группы. этот кусок для прихода и подобный для расхода.
Листинг программы
- i = kol_maska
- reDtF.Pattern = ThisWorkbook.Worksheets().Cells(i, )
- reKtF.Pattern = ThisWorkbook.Worksheets().Cells(i, )
- reDtF.IgnoreCase = True
- reDtF.Global = True
- reKtF.IgnoreCase = True
- reKtF.Global = True
- reDtGO.Pattern = ThisWorkbook.Worksheets().Cells(i, )
- reKtGO.Pattern = ThisWorkbook.Worksheets().Cells(i, )
- reDtGO.IgnoreCase = True
- reDtGO.Global = True
- reKtGO.IgnoreCase = True
- reKtGO.Global = True
- sumGO =
- sumF =
- j = konec
- ThisWorkbook.Worksheets().Cells(j, ) <> _
- ThisWorkbook.Worksheets().Cells(j, ) = _
- (ThisWorkbook.Worksheets().Cells(j, ), , ) <> _
- reDtF.Test(ThisWorkbook.Worksheets().Cells(j, ).Value) _
- reKtF.Test(ThisWorkbook.Worksheets().Cells(j, ).Value)
- sumF = sumF + CDbl(ThisWorkbook.Worksheets().Cells(j, ).Value)
- ThisWorkbook.Worksheets().Cells(j, ) <> _
- ThisWorkbook.Worksheets().Cells(j, ) = _
- (ThisWorkbook.Worksheets().Cells(j, ), , ) = _
- reDtGO.Test(ThisWorkbook.Worksheets().Cells(j, ).Value) _
- reKtGO.Test(ThisWorkbook.Worksheets().Cells(j, ).Value)
- sumGO = sumGO + CDbl(ThisWorkbook.Worksheets().Cells(j, ).Value)
- j
- q =
- sumF <> sumGO <>
- ThisWorkbook.Worksheets().Cells(q, ) <>
- ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, ) _
- ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, )
- ThisWorkbook.Worksheets().Cells(q, ) = CDbl(ThisWorkbook.Worksheets().Cells(q, ).Value) + sumF
- ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, ) _
- ThisWorkbook.Worksheets().Cells(q, ) = ThisWorkbook.Worksheets().Cells(i, )
- ThisWorkbook.Worksheets().Cells(q, ) = CDbl(ThisWorkbook.Worksheets().Cells(q, ).Value) + sumGO
- q = q +
- i
Решение задачи: «Как ускорить работу макроса по сбору данных с помощью регулярных выражений?»
textual
Листинг программы
- <font color="#00AA00">' {skipped}</font>
- <font color="blue">With</font> .Worksheets(<font color="teal">"Свод"</font>)
- lENDSvod = .Cells(.Rows.Count, <font color="darkblue"><b>2</b></font>).<font color="blue">End</font>(xlUp).Row
- 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
- <font color="blue">End</font> <font color="blue">With</font>
- <font color="#00AA00">' {skipped}</font>
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д