powered by simpleCommunicator - 2.0.55     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
47 сообщений из 47, показаны все 2 страниц
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37164245
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Добрый вечер!
Помогите, пожалуйста, подскажите как можно ускорить работу моего макроса, как оптимизировать, очень долго работает.
В таблице с масками примерно 150 масок и таких таблиц 4, а данные, которые обрабатываю содержат в районе 80 000 строк.
Разбираю файл остатки на счете, и по маскам разбрасываю по группам приход/расход, суммируя итоговые суммы по маскам одной группы. этот кусок для прихода и подобный для расхода.

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
For i =  2  To kol_maska 
    
    reDtF.Pattern = ThisWorkbook.Worksheets("маски_приход_Ф").Cells(i,  2 )
    reKtF.Pattern = ThisWorkbook.Worksheets("маски_приход_Ф").Cells(i,  3 )
    
    reDtF.IgnoreCase = True
    reDtF.Global = True
    reKtF.IgnoreCase = True
    reKtF.Global = True
    
    reDtGO.Pattern = ThisWorkbook.Worksheets("маски_приход_ГО").Cells(i,  2 )
    reKtGO.Pattern = ThisWorkbook.Worksheets("маски_приход_ГО").Cells(i,  3 )
    
    reDtGO.IgnoreCase = True
    reDtGO.Global = True
    reKtGO.IgnoreCase = True
    reKtGO.Global = True
    
    sumGO =  0 
    sumF =  0 
    For j =  1  To konec ' проверяем соответствие счетов маскам Приход 
    
        If ThisWorkbook.Worksheets("данные1").Cells(j,  5 ) <> "" And _
            ThisWorkbook.Worksheets("данные1").Cells(j,  4 ) = "" And _
            Mid(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ),  10 ,  2 ) <> "00" And _
            reDtF.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ).Value) And _
            reKtF.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  3 ).Value) Then
 
          sumF = sumF + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j,  4 ).Value)
         
         ElseIf ThisWorkbook.Worksheets("данные1").Cells(j,  5 ) <> "" And _
            ThisWorkbook.Worksheets("данные1").Cells(j,  4 ) = "" And _
            Mid(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ),  10 ,  2 ) = "00" And _
            reDtGO.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ).Value) And _
            reKtGO.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  3 ).Value) Then
          
          sumGO = sumGO + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j,  4 ).Value)
         
        End If
    Next j
    
    q =  2 
    If sumF <>  0  Or sumGO <>  0  Then
     While ThisWorkbook.Worksheets("Свод").Cells(q,  2 ) <> ""
        
        If ThisWorkbook.Worksheets("Свод").Cells(q,  1 ) = ThisWorkbook.Worksheets("маски_приход_Ф").Cells(i,  5 ) And _
            ThisWorkbook.Worksheets("Свод").Cells(q,  2 ) = ThisWorkbook.Worksheets("маски_приход_Ф").Cells(i,  1 ) Then
           
               ThisWorkbook.Worksheets("Свод").Cells(q,  4 ) = CDbl(ThisWorkbook.Worksheets("Свод").Cells(q,  4 ).Value) + sumF
          
        ElseIf ThisWorkbook.Worksheets("Свод").Cells(q,  1 ) = ThisWorkbook.Worksheets("маски_приход_ГО").Cells(i,  5 ) And _
            ThisWorkbook.Worksheets("Свод").Cells(q,  2 ) = ThisWorkbook.Worksheets("маски_приход_ГО").Cells(i,  1 ) Then
           
               ThisWorkbook.Worksheets("Свод").Cells(q,  4 ) = CDbl(ThisWorkbook.Worksheets("Свод").Cells(q,  4 ).Value) + sumGO
        
        End If
        q = q +  1 
     Wend
    End If
Next i
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37164305
Фотография Игорь Горбонос
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
> Автор: mimozka


А кто такие reDtF и иже с ними?
Начни с того, что замени все такие записи ThisWorkbook.Worksheets("маски_приход_ГО") на переменные типа Worksheet и
испульзуй With.
И используй тэг [ S R C ]

Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37164471
Фотография mds_world
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozkaподскажите как можно ускорить работу моего макроса, как оптимизировать, очень долго работает.
В таблице с масками примерно 150 масок и таких таблиц 4, а данные, которые обрабатываю содержат в районе 80 000 строк.
Разбираю файл остатки на счете, и по маскам разбрасываю по группам приход/расход, суммируя итоговые суммы по маскам одной группы. этот кусок для прихода и подобный для расхода.
В любой БД, закачав в нее таблицу екселя, желаемый результат можно получить запросом во вполне допустимое время.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37164707
mimozka,
первый цикл оптимизируется доволно просто - нужно его закомментировать. Заодно и от ошибки 'Type mismatch' при попытке конвертировать пустую строку в Double избавитесь.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
    For j =  1  To konec ' проверяем соответствие счетов маскам Приход 
    
        If ThisWorkbook.Worksheets("данные1").Cells(j,  5 ) <> "" And _
            ThisWorkbook.Worksheets("данные1").Cells(j,  4 ) = "" And _
            Mid(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ),  10 ,  2 ) <> "00" And _
            reDtF.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ).Value) And _
            reKtF.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  3 ).Value) Then
 
          sumF = sumF + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j,  4 ).Value)
         
         ElseIf ThisWorkbook.Worksheets("данные1").Cells(j,  5 ) <> "" And _
            ThisWorkbook.Worksheets("данные1").Cells(j,  4 ) = "" And _
            Mid(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ),  10 ,  2 ) = "00" And _
            reDtGO.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  2 ).Value) And _
            reKtGO.Test(ThisWorkbook.Worksheets("данные1").Cells(j,  3 ).Value) Then
          
          sumGO = sumGO + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j,  4 ).Value)
         
        End If
    Next j
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37164729
mimozka,
принимая во внимание предидущий шаг, приходим к выводу, что цикл While ....Wend в цепких объятьях If ... Then ... End If никогда не будет выполняться:
Код: plaintext
1.
2.
3.
4.
5.
    If sumF <>  0  Or sumGO <>  0  Then ' sumF==0 и sumGO==0
     While ' {skipped}
' {skipped}
     Wend
    End If
Учитывая всё вышеизложенное, получаем оптимизированный "цикл":
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
With ThisWorkbook.Worksheets("маски_приход_Ф")
    reDtF.Pattern = .Cells(kol_maska,  2 )
    reKtF.Pattern = .Cells(kol_maska,  3 )
End With
    reDtF.IgnoreCase = True
    reDtF.Global = True
    reKtF.IgnoreCase = True
    reKtF.Global = True
With ThisWorkbook.Worksheets("маски_приход_ГО")    
    reDtGO.Pattern = .Cells(kol_maska,  2 )
    reKtGO.Pattern = .Cells(kol_maska,  3 )
End With    
    reDtGO.IgnoreCase = True
    reDtGO.Global = True
    reKtGO.IgnoreCase = True
    reKtGO.Global = True
    
    sumGO =  0 
    sumF =  0 

    q =  2 

2 All: поправьте, если ошибся.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165091
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Игорь Горбонос> Автор: mimozka


А кто такие reDtF и иже с ними?

Dim reDtF As New regexp - это регулярное выражение

p.s. Всем отписавшимся Спасибо!!! в течении дня опробую, потом отпишусь. Спасибо! :)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165244
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнемmimozka,
первый цикл оптимизируется доволно просто - нужно его закомментировать. Заодно и от ошибки 'Type mismatch' при попытке конвертировать пустую строку в Double избавитесь.

не поправила из куска Расход, т.е. ячейка должна быть Cells(j, 5) -кредитовый оборот, ошибки не будет.
sumF = sumF + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j, 5).Value),
как так просто закомментировать?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165713
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Кстати, все эти бесконечные And надо тоже убрать и заменить их отдельными конструкциями If ... End If
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
    With ThisWorkbook.Worksheets("данные1")
        If .Cells(j,  5 ) <> "" Then
            If .Cells(j,  4 ) = "" Then
                If reDtF.Test(.Cells(j,  2 ).Value) Then
                    If reKtF.Test(.Cells(j,  3 ).Value) Then
                        If Mid$(.Cells(j,  2 ),  10 ,  2 ) <> "00" Then
                            sumF = sumF + CDbl(.Cells(j,  4 ).Value)
                        Else
                            sumGO = sumGO + CDbl(.Cells(j,  4 ).Value)
                        End If
                    End If
                End If
            End If
        End If
    End With
К тому же у Вас повторяются проверки значений - это тоже отнимает время. Сократил код до разумного. А еще можно все это в массиве обрабатывать - вообще быстро будет.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    sumGO =  0 
    sumF =  0 
    Dim avArr, j As Long
    With ThisWorkbook.Worksheets("данные1")
        avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
            If avArr(j,  5 ) <> "" Then
                If avArr(j,  4 ) = "" Then
                    If reDtF.Test(avArr(j,  2 )) Then
                        If reKtF.Test(avArr(j,  3 )) Then
                            If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                                sumF = sumF + CDbl(avArr(j,  4 ))
                            Else
                                sumGO = sumGO + CDbl(avArr(j,  4 ))
                            End If
                        End If
                    End If
                End If
            End If
        Next j
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165738
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Хотя я упустил один момент, про который уже упоминали - Вы в любом случае хотите преобразовать в число пустую строку.
Код: plaintext
1.
ThisWorkbook.Worksheets("данные1").Cells(j,  4 ) = ""
sumF = sumF + CDbl(ThisWorkbook.Worksheets("данные1").Cells(j,  4 ).Value)
Это как-то неправильно...Вот так, наверное:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
    sumGO =  0 
    sumF =  0 
    Dim avArr, j As Long
    With ThisWorkbook.Worksheets("данные1")
        avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
            If avArr(j,  5 ) <> "" Then
                If avArr(j,  4 ) <> "" Then
                    If IsNumeric(avArr(j,  4 )) Then'проверяем - числовое значение в ячейке или нет.
                        If reDtF.Test(avArr(j,  2 )) Then
                            If reKtF.Test(avArr(j,  3 )) Then
                                If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                                    sumF = sumF + CDbl(avArr(j,  4 ))
                                Else
                                    sumGO = sumGO + CDbl(avArr(j,  4 ))
                                End If
                            End If
                        End If
                    End If
                End If
            End If
        Next j
    End With
А еще лучше, наверное так:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
    sumGO =  0 
    sumF =  0 
    Dim avArr, j As Long
    With ThisWorkbook.Worksheets("данные1")
        avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
            If avArr(j,  5 ) <> "" Then
                If avArr(j,  4 ) <> "" Then
                    If reDtF.Test(avArr(j,  2 )) Then
                        If reKtF.Test(avArr(j,  3 )) Then
                            If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                                sumF = sumF + Val(Replace(avArr(j,  4 ), ",", ".")) 'сразу число прибавляем
                            Else
                                sumGO = sumGO + Val(Replace(avArr(j,  4 ), ",", "."))
                            End If
                        End If
                    End If
                End If
            End If
        Next j
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165880
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristХотя я упустил один момент, про который уже упоминали - Вы в любом случае хотите преобразовать в число пустую строку.
Я же написала перед Вашими сообщениями, что не (j, 4), а (j, 5), т.е. я проверяю, что (j, 5) не пуст, а (j, 4) пуст и преобразую (j, 5) в CDbl.
(j, 4) -Дебет
(j, 5) -Кредит, т.е. я смотрю кредитовый оборот в выписке.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165891
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozka,

Так ведь еще проце:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    sumGO =  0 
    sumF =  0 
    Dim avArr, j As Long
    With ThisWorkbook.Worksheets("данные1")
        avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
            If reDtF.test(avArr(j,  2 )) Then
                If reKtF.test(avArr(j,  3 )) Then
                    If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                        sumF = sumF + Val(Replace(avArr(j,  4 ), ",", "."))    'сразу число прибавляем
                    Else
                        sumGO = sumGO + Val(Replace(avArr(j,  5 ), ",", "."))'Это расходи или приход? В общем замените сами где нужно 4 на 5.
                    End If
                End If
            End If
        Next j
    End With
Я сообщение читал, но не очень понял, что Вы там где забыли заменить, т.к. кусок Расход не очень-то в глаза бросается. Приход есть - а Расход не видать :-)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165922
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
К тому же у Вас повторяются проверки значений - это тоже отнимает время.
Да, но теперь пропала проверка по DtGO и KtGO, у меня 2 таблицы масок для прихода: дебет, кредит для филиалов и дебет, кредит для головы.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165948
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_PristЯ сообщение читал, но не очень понял, что Вы там где забыли заменить, т.к. кусок Расход не очень-то в глаза бросается. Приход есть - а Расход не видать :-)
А Расхода и нет :), я его не выставляла, он есть у меня, он подобный приходу, который я делала копипастом и не поправила.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165956
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну да...Действительно. Может так?
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
    sumGO =  0 
    sumF =  0 
    Dim avArr, j As Long
    With ThisWorkbook.Worksheets("данные1")
        avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
            If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                If reKtF.test(avArr(j,  3 )) And reDtF.test(avArr(j,  2 )) Then
                    sumF = sumF + Val(Replace(avArr(j,  4 ), ",", "."))    'сразу число прибавляем
                End If
            Else
                If reDtGO.test(avArr(j,  2 )) And reKtGO.test(avArr(j,  3 )) Then
                    sumGO = sumGO + Val(Replace(avArr(j,  4 ), ",", "."))
                End If
            End If
        Next j
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37165988
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
но это не весь Расход, который у меня был, так?
потому как если сумму обнулять в самом начале, а потом идти по всем маскам, то у меня в итоге будет всего 2 суммы sumGO и sumF, а в моем случае надо еще разбивать по группам, т.е. допустим 5 масок это 1-я группа, 4 маски-2 группа и т .д. и суммы по каждой группе должны быть в своей ячейке итоговой таблицы.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166029
mimozka,
заинтриговали.
Маски действительно настолько сложные, что требуются регуляярные выражения? Может быдет достаточно LIKE ?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166082
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozka,

если честно, то с файлом было бы проще разобраться, нежели с НЕПОЛНЫМ вашим кодом.
Вот что-то такое получилось - но проверить не на чем.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
    Dim avArr, j As Long, avМаски_приход_ГО_Arr, avМаски_приход_Ф_Arr, i As Long
    Dim avSvodArr
    With ThisWorkbook
        With .Worksheets("маски_приход_ГО")
            avМаски_приход_ГО_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("маски_приход_Ф")
            avМаски_приход_Ф_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("данные1")
            avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        End With

        With .Worksheets("Свод")
            lENDSvod = .Cells(.Rows.Count,  2 ).End(xlUp).Row
            avSvodArr = Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value
        End With

        For i =  2  To kol_maska
            reDtF.Pattern = avМаски_приход_ГО_Arr(i,  2 ): reDtF.IgnoreCase = True: reDtF.Global = True
            reKtF.Pattern = avМаски_приход_ГО_Arr(i,  3 ): reKtF.IgnoreCase = True: reKtF.Global = True

            reDtGO.Pattern = avМаски_приход_ГО_Arr(i,  2 ): reDtGO.IgnoreCase = True: reDtGO.Global = True
            reKtGO.Pattern = avМаски_приход_ГО_Arr(i,  3 ): reKtGO.IgnoreCase = True: reKtGO.Global = True

            sumGO =  0 : sumF =  0 

            For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
                If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                    If reKtF.test(avArr(j,  3 )) And reDtF.test(avArr(j,  2 )) Then
                        sumF = sumF + Val(Replace(avArr(j,  4 ), ",", "."))    'сразу число прибавляем
                    End If
                Else
                    If reDtGO.test(avArr(j,  2 )) And reKtGO.test(avArr(j,  3 )) Then
                        sumGO = sumGO + Val(Replace(avArr(j,  4 ), ",", "."))
                    End If
                End If
            Next j

            If (sumF + sumGO) <>  0  Then
                With .Worksheets("Свод")
                    For q =  2  To lENDSvod
                        If avSvodArr(q,  1 ) = avМаски_приход_Ф_Arr(i,  5 ) And _
                           avSvodArr(q,  2 ) = avМаски_приход_Ф_Arr(i,  1 ) Then
                            .Cells(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumF

                        ElseIf avSvodArr(q,  1 ) = avМаски_приход_ГО_Arr(i,  5 ) And _
                               avSvodArr(q,  2 ) = avМаски_приход_ГО_Arr(i,  1 ) Then
                            .Cells(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumGO
                        End If
                    Next q
                End With
            End If
        Next i
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166123
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнемmimozka,
заинтриговали.
Маски действительно настолько сложные, что требуются регуляярные выражения? Может быдет достаточно LIKE ?
например 47423810[0-9]{3}02[0-9]{7} или [0156789][12345689][01356789][13456789][02345689][0-9]{15} :)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166145
mimozka,
убедили.


2 The_Prist :
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
' {skipped}
                    For q =  2  To lENDSvod
                        If avSvodArr(q,  1 ) = avМаски_приход_Ф_Arr(i,  5 ) And _
                           avSvodArr(q,  2 ) = avМаски_приход_Ф_Arr(i,  1 ) Then
                            .Cells(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumF

                        ElseIf avSvodArr(q,  1 ) = avМаски_приход_ГО_Arr(i,  5 ) And _
                               avSvodArr(q,  2 ) = avМаски_приход_ГО_Arr(i,  1 ) Then
                            .Cells(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumGO
                        End If
                    Next q
' {skipped}
' выделенное выбивается из общего стиля "работу с листами вынести за цикл"
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166156
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем,

Без примера данных или полного кода трудно это обойти. Т.к. надо в массив загонять сами значения и затем на лист выгружать. А для этого надо хотя бы видеть куда . Поэтому эти две строки и остались такими, ибо по другому значения на лист по вышеуказанным причинам не внести.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166263
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
лист "Данные1"

бик дт кт № п/п
028200003 42305081000000030000 40101810100000010001 500.00 65537
028200001 41506081000000000000 40101810100000010001 500.00 65538
и т.д.

лист "маски_приход_ГО"

группа маска по ДТ маска по КТ наименование
1 [0-9]{20} 473[0-9]{17} Возврат кредитов
7 [0-9]{20} 47407810[0-9]{3}34[0-9]{7} Банковские конвертации

лист "Свод"
Группа Наименование группы (статья прихода) Сумма
приход 1 Возврат кредитов
приход 2 Возврат выданных МБК
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166273
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
млин, наименования столбцов съехали (
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166276
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
млин, наименования столбцов съехали ((
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166281
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozka028200003 42305081000000030000 40101810100000010001 500.00 65537
028200001 41506081000000000000 40101810100000010001 500.00 65538Если 500.00 это сумма, и все суммы у Вас записаны с разделителем дробной части точка, то эти строки:
Код: plaintext
.Cells(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumGO
можно записать так:
Код: plaintext
.Cells(q,  4 ) = Val(avSvodArr(q,  4 )) + sumGO

А вообще под примером я имел ввиду файл Excel , а не строки, из него скопированные.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166312
2 The_PristThe_Pristпробуй камнем,
...
Т.к. надо в массив загонять сами значения и затем на лист выгружать. А для этого надо хотя бы видеть куда . ...
Откуда:
The_Prist
Код: plaintext
1.
2.
3.
4.
5.
6.
' {skipped}
        With .Worksheets("Свод")
            lENDSvod = .Cells(.Rows.Count,  2 ).End(xlUp).Row
            avSvodArr = Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value
        End With
' {skipped}
Куда: - туда же, откуда читали в массив.


2 mimozka,
можно оптимизировать при условии, что маски не пересекаются, т.е.
если значение данные1.Cells(j, 2)
совпало с маской маски_приход_Ф.Cells(1, 2) ,
то ни с какими другими масками оно не совпадёт.
В этом случае соответствия маске, у значения выставляется флаг "уже распределили". При проходе со следующими масками, если флаг "уже распределили" установлен, то значение не тестируется на соответствие маске.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37166980
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,
маски не пересекаются точно, а как ставится флаг? можно подробнее?, плиз.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167059
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
пробуй камнем2 The_PristThe_PristТ.к. надо в массив загонять сами значения и затем на лист выгружать. А для этого надо хотя бы видеть куда . ...
Куда: - туда же, откуда читали в массив.Это я понимаю. Я не совсем глуп, чтобы, написав код и загрузив значения с листа в массив, не знать куда потом выгрузить. Меня больше вопрос интересовал нет ли на этом листе формул. Иначе при выгрузке массива их не станет. Поэтому я и написал: видеть куда .
А то так неплохой нежданчик может получиться для автора темы - были формулы - и не стало....
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167372
mimozka,
на примере кода из Вашего первого поста. Всего-лишь пример. Для продакшн-версии лучше будет, если перепишете с использованием массивов, как предлагал многоуважаемый The_Prist.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
' {skipped}
    sumGO =  0 
    sumF =  0 
With ThisWorkbook.Worksheets("данные1")
    For j =  1  To konec ' проверяем соответствие счетов маскам Приход
    If .Cells(j,  5 ) <> "" Then ' проверка "флага"
    If .Cells(j,  4 ) = "" Then
    If Mid(.Cells(j,  2 ),  10 ,  2 ) <> "00" Then
            
            If reDtF.Test(.Cells(j,  2 ).Value) Then ' из этих двух условий первым должно стоять то,
            If reKtF.Test(.Cells(j,  3 ).Value) Then ' которое реже выполняется
 
          sumF = sumF + CDbl(.Cells(j,  5 ).Value)
          .Cells(j,  5 ).Value = "" ' <-- установка "флага". Если не желательно менять исходные данне - выделить под флаг отдельный столбец

            End If 'reKtF.Test(.Cells(j, 3).Value)
            End If 'reDtF.Test(.Cells(j, 2).Value)
    Else         

            If reDtGO.Test(.Cells(j,  2 ).Value) Then
            If reKtGO.Test(.Cells(j,  3 ).Value) Then
          
          sumGO = sumGO + CDbl(.Cells(j,  5 ).Value)
          .Cells(j,  5 ).Value = "" ' <-- установка "флага". Если не желательно менять исходные данне - выделить под флаг отдельный столбец

            End If 'reKtGO.Test(.Cells(j, 3).Value)
            End If 'reDtGO.Test(.Cells(j, 2).Value)
    End If 'Mid(.Cells(j, 2), 10, 2) <> "00"
    End If '.Cells(j, 4) = ""
    End If '.Cells(j, 5) <> ""
    Next j
End With
' {skipped}
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167389
ОФФ:
The_Prist,
про возможность наличия формул в диапазонах, где данные обновляются методом "+=", каюсь, не подумал.
Век живи - век учись. Всё равно ...(с)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167551
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,
формул никаких нет.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167606
mimozka,
тогда сам Аллах велел загружать данные с листов в массивы в циклах уже массивы гонять.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167731
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozkaформул никаких нет.Ну так в чем проблема? :-)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
    Dim avArr, j As Long, avМаски_приход_ГО_Arr, avМаски_приход_Ф_Arr, i As Long
    Dim avSvodArr
    With ThisWorkbook
        With .Worksheets("маски_приход_ГО")
            avМаски_приход_ГО_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("маски_приход_Ф")
            avМаски_приход_Ф_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("данные1")
            avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        End With

        With .Worksheets("Свод")
            lENDSvod = .Cells(.Rows.Count,  2 ).End(xlUp).Row
            avSvodArr = Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value
        End With

        For i =  2  To kol_maska
            reDtF.Pattern = avМаски_приход_ГО_Arr(i,  2 ): reDtF.IgnoreCase = True: reDtF.Global = True
            reKtF.Pattern = avМаски_приход_ГО_Arr(i,  3 ): reKtF.IgnoreCase = True: reKtF.Global = True

            reDtGO.Pattern = avМаски_приход_ГО_Arr(i,  2 ): reDtGO.IgnoreCase = True: reDtGO.Global = True
            reKtGO.Pattern = avМаски_приход_ГО_Arr(i,  3 ): reKtGO.IgnoreCase = True: reKtGO.Global = True

            sumGO =  0 : sumF =  0 

            For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
                If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                    If reKtF.test(avArr(j,  3 )) And reDtF.test(avArr(j,  2 )) Then
                        sumF = sumF + Val(Replace(avArr(j,  4 ), ",", "."))    'сразу число прибавляем
                    End If
                Else
                    If reDtGO.test(avArr(j,  2 )) And reKtGO.test(avArr(j,  3 )) Then
                        sumGO = sumGO + Val(Replace(avArr(j,  4 ), ",", "."))
                    End If
                End If
            Next j

            If (sumF + sumGO) <>  0  Then
                For q =  2  To lENDSvod
                    If avSvodArr(q,  1 ) = avМаски_приход_Ф_Arr(i,  5 ) And _
                       avSvodArr(q,  2 ) = avМаски_приход_Ф_Arr(i,  1 ) Then
                        avSvodArr(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumF

                    ElseIf avSvodArr(q,  1 ) = avМаски_приход_ГО_Arr(i,  5 ) And _
                           avSvodArr(q,  2 ) = avМаски_приход_ГО_Arr(i,  1 ) Then
                        avSvodArr(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumGO
                    End If
                Next q
            End If
        Next i
        With .Worksheets("Свод")
            Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value = avSvodArr
        End With
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37167743
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, забыл. Вот это:
Код: plaintext
1.
2.
3.
4.
reDtF.IgnoreCase = True: reDtF.Global = True
reKtF.IgnoreCase = True: reKtF.Global = True

reDtGO.IgnoreCase = True: reDtGO.Global = True
reKtGO.IgnoreCase = True: reKtGO.Global = True
Можно тоже за цикл убрать.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
50.
51.
52.
53.
54.
55.
56.
57.
58.
59.
60.
Dim avArr, j As Long, avМаски_приход_ГО_Arr, avМаски_приход_Ф_Arr, i As Long
    Dim avSvodArr
    With ThisWorkbook
        With .Worksheets("маски_приход_ГО")
            avМаски_приход_ГО_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("маски_приход_Ф")
            avМаски_приход_Ф_Arr = Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  5 )).Value
        End With
        With .Worksheets("данные1")
            avArr = Range(.Cells( 1 ,  1 ), .Cells(konec,  5 )).Value
        End With

        With .Worksheets("Свод")
            lENDSvod = .Cells(.Rows.Count,  2 ).End(xlUp).Row
            avSvodArr = Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value
        End With
        
        reKtGO.IgnoreCase = True: reKtGO.Global = True
        reDtGO.IgnoreCase = True: reDtGO.Global = True
        reDtF.IgnoreCase = True: reDtF.Global = True
        reKtF.IgnoreCase = True: reKtF.Global = True

        For i =  2  To kol_maska
            reDtF.Pattern = avМаски_приход_ГО_Arr(i,  2 )
            reKtF.Pattern = avМаски_приход_ГО_Arr(i,  3 )

            reDtGO.Pattern = avМаски_приход_ГО_Arr(i,  2 )
            reKtGO.Pattern = avМаски_приход_ГО_Arr(i,  3 )

            sumGO =  0 : sumF =  0 

            For j =  1  To konec    ' проверяем соответствие счетов маскам Приход
                If Mid$(avArr(j,  2 ),  10 ,  2 ) <> "00" Then
                    If reKtF.test(avArr(j,  3 )) And reDtF.test(avArr(j,  2 )) Then
                        sumF = sumF + Val(Replace(avArr(j,  4 ), ",", "."))    'сразу число прибавляем
                    End If
                Else
                    If reDtGO.test(avArr(j,  2 )) And reKtGO.test(avArr(j,  3 )) Then
                        sumGO = sumGO + Val(Replace(avArr(j,  4 ), ",", "."))
                    End If
                End If
            Next j

            If (sumF + sumGO) <>  0  Then
                For q =  2  To lENDSvod
                    If avSvodArr(q,  1 ) = avМаски_приход_Ф_Arr(i,  5 ) And _
                       avSvodArr(q,  2 ) = avМаски_приход_Ф_Arr(i,  1 ) Then
                        avSvodArr(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumF

                    ElseIf avSvodArr(q,  1 ) = avМаски_приход_ГО_Arr(i,  5 ) And _
                           avSvodArr(q,  2 ) = avМаски_приход_ГО_Arr(i,  1 ) Then
                        avSvodArr(q,  4 ) = Val(Replace(avSvodArr(q,  4 ), ",", ".")) + sumGO
                    End If
                Next q
            End If
        Next i
        With .Worksheets("Свод")
            Range(.Cells( 1 ,  1 ), .Cells(lENDSvod,  5 )).Value = avSvodArr
        End With
    End With
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37178765
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
тяжелая была неделька, некогда было доделывать...

сейчас пытаюсь запустить макрос, ругается на строчку avМаски_приход_ГО_Arr = Range(.Cells(1, 1), .Cells(kol_maska, 4)).Value

Run-time error '1004'
Application-defined or object-defined error

что не так?

и еще, размерность массива разве не нужно указывать?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37178792
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozka,

Размерность не нужно - сама определится.

Попробуйте так:
Код: plaintext
.Range(.Cells( 1 ,  1 ), .Cells(kol_maska,  4 )).Value
Хотя обычно точка не требуется в данном случае. Поэтому есть предположение, что ошибка в переменной: kol_maska . Может быть она у Вас нулю равна? Или за пределы листа выходит значение(больше 65536)?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37179056
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
Спасибо! ошибка ушла, дело было в точке! смотрю дальше :)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37181423
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
If (sumF + sumGO) <> 0 Then
For q = 2 To lENDSvod
If avSvodArr(q, 1) = avМаски_приход_Ф_Arr(i, 5) And _
avSvodArr(q, 2) = avМаски_приход_Ф_Arr(i, 1) Then
avSvodArr(q, 4) = Val(Replace(avSvodArr(q, 4), ",", ".")) + sumF

ElseIf avSvodArr(q, 1) = avМаски_приход_ГО_Arr(i, 5) And _
avSvodArr(q, 2) = avМаски_приход_ГО_Arr(i, 1) Then
avSvodArr(q, 4) = Val(Replace(avSvodArr(q, 4), ",", ".")) + sumGO
End If
Next q
End If

выскакивает ошибка "Run-time error '9': Subscript out of range", что не так?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37181678
mimozka,
предположу, что пытаетесь получить из массива элемент по несуществующему индексу.

ЗЫ: указание строки, на которой получаете ошибку в совокупности со значениями переменных ускорят обнаружение жука/граблей значительно.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182103
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,

максимальное значение индекса i = 65536, поиск строки на которой получаю ошибку займет часа 3-4 методом перебора..
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182116
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozkaмаксимальное значение индекса i = 65536, поиск строки на которой получаю ошибку займет часа 3-4 методом перебора..А кто говорил про метод перебора? Проверьте в коде в момент возникновения ошибки - какое значение у переменной i (какое число) и какое значение у переменной kol_maska . Наверное, kol_maska меньше i . Вот и получается, что Вы пытаетесь обратиться к несуществующему элементу массива.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182696
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
похоже ты прав, только я не пойму почему???

If sumGO <> 0 Then
For q = 2 To lENDSvod
If avSvodArr(q, 1) = avМаски_приход_ГО_Arr(i, 5) And _
avSvodArr(q, 2) = avМаски_приход_ГО_Arr(i, 1) Then

avSvodArr(q, 4) = Val(Replace(avSvodArr(q, 4), ",", ".")) + sumGO
End If
Next q
End If

у меня lENDSvod =35, так вот как только Next q = 35, выходит ошибка "Subscript out of range", разве при q=35 не заканчивается просто цикл?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182725
Фотография The_Prist
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mimozka,

цикл закончится как только q =36. Т.к. цикл идет от 2 до lENDSvod(а оно у нас = 35). И это 35 проходит через цикл. А вот 36 уже нет.
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182751
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
The_Prist,
ну это да, но почему ошибка?
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37182829
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Спасибо, кажется разобралась, всё долеплю и отпишусь уже :)
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37227016
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
правильно ли писать маску следующим образом [0156789][12345689][1356789][13456789][046789][0-9]{15} , например, для счета 20223810700012348451, почему то ответ false ?!
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37227188
mimozka,
маска: [0156789][12345689][1356789][13456789][046789][0-9]{15} (длина "поиска" от 20-и до 20-и символов)
счет: 20223810700012348451 (длина 20 символов)
элемент маски описаниеможно заменить насоответствующие символы счета совпадение[0156789]один из символов 0 1 5 6 7 8 9[015-9]2 False[12345689]один из символов 1 2 3 4 5 6 8 9[1-689]0 False[1356789]один из символов 1 3 5 6 7 8 9[135-9]2 False[13456789]один из символов 1 3 4 5 6 7 8 9[134-9]2 False[046789]один из символов 0 4 6 7 8 9[046-9]3 False[0-9]{15}15 символов каждый из которых цифра от 0 до 9менять нечего810700012348451 True
...
Рейтинг: 0 / 0
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
    #37227203
mimozka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
пробуй камнем,
ой! точно!!! дурында я )), составила называется пример счета )), почти от обратного )))
Спасибо, пробуй камнем!
...
Рейтинг: 0 / 0
47 сообщений из 47, показаны все 2 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]