|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
пробуй камнем, маски не пересекаются точно, а как ставится флаг? можно подробнее?, плиз. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 10:20 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
пробуй камнем2 The_PristThe_PristТ.к. надо в массив загонять сами значения и затем на лист выгружать. А для этого надо хотя бы видеть куда . ... Куда: - туда же, откуда читали в массив.Это я понимаю. Я не совсем глуп, чтобы, написав код и загрузив значения с листа в массив, не знать куда потом выгрузить. Меня больше вопрос интересовал нет ли на этом листе формул. Иначе при выгрузке массива их не станет. Поэтому я и написал: видеть куда . А то так неплохой нежданчик может получиться для автора темы - были формулы - и не стало.... ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 10:55 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 12:56 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
ОФФ: The_Prist, про возможность наличия формул в диапазонах, где данные обновляются методом "+=", каюсь, не подумал. Век живи - век учись. Всё равно ...(с) ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 13:01 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
пробуй камнем, формул никаких нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 13:38 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
mimozka, тогда сам Аллах велел загружать данные с листов в массивы в циклах уже массивы гонять. ... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 13:54 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 14:23 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
Да, забыл. Вот это: Код: plaintext 1. 2. 3. 4.
Код: 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.
... |
|||
:
Нравится:
Не нравится:
|
|||
16.03.2011, 14:26 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
тяжелая была неделька, некогда было доделывать... сейчас пытаюсь запустить макрос, ругается на строчку avМаски_приход_ГО_Arr = Range(.Cells(1, 1), .Cells(kol_maska, 4)).Value Run-time error '1004' Application-defined or object-defined error что не так? и еще, размерность массива разве не нужно указывать? ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 11:39 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
mimozka, Размерность не нужно - сама определится. Попробуйте так: Код: plaintext
... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 11:50 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
The_Prist, Спасибо! ошибка ушла, дело было в точке! смотрю дальше :) ... |
|||
:
Нравится:
Не нравится:
|
|||
23.03.2011, 13:21 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
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", что не так? ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2011, 17:26 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
mimozka, предположу, что пытаетесь получить из массива элемент по несуществующему индексу. ЗЫ: указание строки, на которой получаете ошибку в совокупности со значениями переменных ускорят обнаружение жука/граблей значительно. ... |
|||
:
Нравится:
Не нравится:
|
|||
24.03.2011, 20:37 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
пробуй камнем, максимальное значение индекса i = 65536, поиск строки на которой получаю ошибку займет часа 3-4 методом перебора.. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 10:20 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
mimozkaмаксимальное значение индекса i = 65536, поиск строки на которой получаю ошибку займет часа 3-4 методом перебора..А кто говорил про метод перебора? Проверьте в коде в момент возникновения ошибки - какое значение у переменной i (какое число) и какое значение у переменной kol_maska . Наверное, kol_maska меньше i . Вот и получается, что Вы пытаетесь обратиться к несуществующему элементу массива. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 10:24 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
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 не заканчивается просто цикл? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 15:03 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
mimozka, цикл закончится как только q =36. Т.к. цикл идет от 2 до lENDSvod(а оно у нас = 35). И это 35 проходит через цикл. А вот 36 уже нет. ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 15:19 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
The_Prist, ну это да, но почему ошибка? ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 15:27 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
Спасибо, кажется разобралась, всё долеплю и отпишусь уже :) ... |
|||
:
Нравится:
Не нравится:
|
|||
25.03.2011, 16:04 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
правильно ли писать маску следующим образом [0156789][12345689][1356789][13456789][046789][0-9]{15} , например, для счета 20223810700012348451, почему то ответ false ?! ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 16:12 |
|
Как ускорить работу макроса по сбору данных с помощью регулярных выражений?
|
|||
---|---|---|---|
#18+
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 ... |
|||
:
Нравится:
Не нравится:
|
|||
21.04.2011, 17:17 |
|
|
start [/forum/topic.php?fid=60&msg=37181678&tid=2158780]: |
0ms |
get settings: |
8ms |
get forum list: |
14ms |
check forum access: |
5ms |
check topic access: |
5ms |
track hit: |
42ms |
get topic data: |
12ms |
get forum data: |
3ms |
get page messages: |
57ms |
get tp. blocked users: |
2ms |
others: | 334ms |
total: | 482ms |
0 / 0 |