|
|
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Собственно проблема такая: Все замечательно работает, но долго.. лист с 200 строками обрабатывает 30 сек, помогите ускорить макрос если это возможно. Макрос вставляет в три таблички значения из другого файла..по критериям. Вот код: Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. Очень прошу помощи! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2011, 16:08 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Для начала научиться оформлять код на форуме (см. правила и FAQ по оформлению сообщений) Потом избавиться от всех Select, Selection и Active ибо констукция Код: plaintext 1. Код: plaintext После этого можно посмотреть, что там в коде такого тормозного. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2011, 16:46 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Вот: удалил Select Selections. Еще пробовал отключать расчет по формулам...и вставлялось всё моментально, но по понятным причинам везде одно и то же значение..А так время выполнения макроса все то же 30 сек....прошу помощи в оптимизации кода.. Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2011, 18:04 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28от: удалил Select Selectionsкак же удалил, когда еще 17 раз встречается... Нет никакого смысла делать Select, а потом работать с Selection или с ActiveCell, можно все методы применять сразу к Range. То же касается закрытия активного окна.... Ну а по производительности... хорошо бы файл иметь, чтобы на нем смотреть ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 22.10.2011, 18:35 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
ИМХО, ускорить "вставление" здесь сможет отключение/включение автопересчета (ибо ВПР() летуча...) Ну и, естественно, изучение объекной модели. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2011, 05:52 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
AndreTM...ибо ВПР() летуча... ВПР не летуча. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2011, 05:58 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Т.е. сперва тянете данные кучей ВПР(), потом меняете их на значения? Можно сразу всё взять кодом, но нужен пример в файле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2011, 13:10 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Serge 007, а, да, тормознул... суббота была ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2011, 17:37 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Так или иначе, выложи автор свой пример в виде файла, наверняка получил бы уже несколько конкретных решений. Шокер, не сочти это за критику в твой адрес. Твоя реплика тривиальна и(а значит) безусловно верна. Давайте подождем автора. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 23.10.2011, 21:09 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Огромное спасибо всем за советы...но у меня возникла идея совсем от ВПР отказаться...ибо долго он считает( мне так кажется)...проверял отключением авторасчета...и все мгновенно вставилось, но одно и то же (я формулу растягивал по диапазону)..В целом у меня дело обстоит так: Есть Файл №1. Так вот на листе 1 есть три таблицы. На листе 2 - только одна. На листе 3 как должно получиться. Таблица вида: 1 текст число 1 текст число 1 текст число 2 текст число 2 текст число 2 текст число 3 текст текст 3 текст текст Задача: Сделать выборку данных, затем автоматом их распихать по трем соответствующим таблицам ( для данных напротив 1 , 2 и 3) Затем удалить пустые строки и обрамить... Вопрос выборки сначала попробовал решить ВПР - но долго. - соответственно вопрос выборки - не решил)) Вопрос удаления строк - решил Вопрос обрамления - решил Так вот есть код Код: plaintext 1. 2. 3. 4. 5. 6. Так вот теперь самый главный вопрос: Как мне привязать номер строки к значению в первом столбце? чтобы Range("B1:D14") - был динамическим, а именно только последняя строка...тоесть (B1:Di ) где i Меняется в зависимости от значения в первом столбце.. может как то так, например для первой таблицы: пишу словами, т.к. не знаю как это выдать на языке VBA Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. вот...помогите теперь всё это на язык VBA перевести) файл приложил ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 17:42 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Я толком не понял - что есть и что нужно получить? Как понял - есть данные на листе2 и пустые таблицы на листе1. Зачем пустые и нельзя ли их генерить макросом как нужно (чтоб не искать, что удалять)? Зачем вообще лист3 и что на нём уже есть, а что добавляется макросом (и зачем)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 17:57 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
... мне кажется, что можно сделать быстро на массивах и словаре/коллекции. Но объясните, что именно нужно. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 18:22 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
на листе 3 - образец что должно получиться, так сказать наглядный пример. А нужно след.: Нужно данные из одной таблицы, рассортировать по трем разным таблицам. Из условия что в первую таблицу заносятся данные если на листе 2 (в ОБЩЕЙ таблице) напротив этих данных в столбце 1 (A) стоит значение 1, во вторую таблицу заносятся данные если на листе 2 (в ОБЩЕЙ таблице) напротив этих данных в столбце 1 (A) стоит значение 2, в третью таблицу заносятся данные если на листе 2 (в ОБЩЕЙ таблице) напротив этих данных в столбце 1 (A) стоит значение 3 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 18:30 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
что значит на массивах и коллекциях/словарях? мне хочется запустить импорт данных одним нажатием кнопки...а это ж только макросом и можно сделать...вот сначала записал макрос с впр, но долго...руками быстрее...теперь пытаюсь осилить более оптимизированный код... Если есть решения ещё проще я бы был вам очень благодарен, если бы Вы меня направили в нужное русло...я не прошу мне код готовый прислать, мне в принципе самому интересно разобраться, хотя в программировании я полный профан...)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 19:29 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Hugo121... мне кажется, что можно сделать быстро на массивах и словаре/коллекции. Но объясните, что именно нужно. Я фигею. Игорь, ну наф... зачем? Почему не дать автору высказаться? Ты же умничка! Такое ощущение, что мне в пику делаешь. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 19:37 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
kuklp, Привет Сергей ! Я для себя такой алгоритм нарисовал : ADO 2 рекордсета: 1 - группируем по F1 и заодно подсчитываем значения(для смещения диаапзона вставки) 2- делаем единый формат таблицы из 3 столбов затем перебираем 1 рекордсет, 1 значением фильтруем 2 рекордсет выгружаем на лист, берем значение из первого рекордсета и смещаем точку вставки следующей таблицы, так границы таблиц определены не составляет труда после вставки таблицы, отформатировать ее как надо.(добавить заголовки и стили) как то так, но писать лениво -Q ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 20:20 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Сергей, так я дал. Полчаса :) И всё равно до конца не понятно - эти значения 1, 2 и 3 - заранее известны, и по ним нужно отбирать? Столбцы A и B всегда заполнены, а числа могут быть или в C, или в D? Если так, то просто - исходные данные в массив (словарь не нужен), создаём ещё 3 пустых таких же по размеру, но на 3 столбца (или 6 на 1 столбец). И 3 переменных для подсчёта. Перебираем первый массив, анализируем первый столбец. Набираем данные в пустые массивы, считаем количество в каждом (т.е. используем индекс и для заполнения, и потом для выгрузки - это по одной переменной на массив или параллельную пару массивов). В итоге имеем 3 (или 6) массивов с данными, верхушку которых выгружаем куда нужно. Вопрос - куда нужно? Один под другим с промежутком в 2 строки или как? Ну а красоту и рамки потом можно навести - координаты данных будут известны. Find не нужен, один цикл не по листу, а по массиву - будет меньше секунды на 200 строк. Основное время вероятно натягивание рамок займёт :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 20:26 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Дима, Игорь - чесслово - рад вам! Но еще Шокер в теме написал(см. сообщение №2). Помимо моей радости от увиденного, давайте братья подождем автора? П.С. Вы, безусловно, лучшие! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 20:38 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28что значит на массивах? Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. Чего уж ждать, раз написано? Не подойдёт ТС - может другим сгодится :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 21:24 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Помарка, так нужно объявить: Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 21:26 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Упс, ещё проглядел - 1, 2 и 3 ведь не нужно в массив забивать :( Тогда этот блок должен быть таким - 3 строки изменил, 3 удалил: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:05 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
ВЫ реально лучшие, СПАСИБО ВАМ ОГРОМНОЕ ЗА ПОМОЩЬ... Но я чесслово вообще ничего не понял))))) Все что связано с массивами))) Но это круто...То что вы так вот сходу такие темы лабаете - это круто...Респект)) Но позвольте, мне еще тогда раз все более подробно разъяснить, а то вижу что люди мне пытаются помочь, а я блин толком не могу рассказать что мне надо...Итак ещё раз о моей задаче: У меня есть файл, допустим он называется Книга1. В нем на первом листе есть таблицы, которые необходимо заполнить. Таблиц три штуки, идут они друг за другом, в конце каждой таблицы есть итог. (пример я прикрепил). Тоесть если в табличке в столбце числа идут 1,2,3 то в графе ИТОГ в конце будет их сумма - 6. Графа "Итог" должна быть в конце обязательно, поэтому я и сделал сначала в каждой таблице пустых строк с запасом, а потом просто их удалить по условию, что в них стоит "0" в графе число... Теперь как формируются данные на листе 2. Таблица всегда одного вида. НИКОГДА не меняются столбцы. Никогда не меняется условие отбора - это всегда числа в первом столбце либо 1, либо 2, либо 3. Но количество строк с каждым числом может меняться...В примере на листе 2 я привел пример...Нарисовал две таблицы какие они могут быть... Теперь что куда надо импортировать: Например для первой таблицы грубо говоря по аналогии с формулой впр: если в таблице на листе2 в столбце A:A, есть число 2, то нужно скопировать из этой строки данные их столбцов D и G в соответственно первую таблицу на первом листе в первую строку в столбцы A и D (как в прикрепленном примере) Руками я делаю так: выделяю массив данных все что напротив Числа 2 из первого столбца, потом Ctrl+C, перехожу на самую верхнюю и левую ячейку первой таблицы Ctrl+V...потом удалял пустые строки и обрамлял. Вот и все и так для каждой таблицы. Надеюсь что Вы меня поняли... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:26 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Мне самое главное это тупо отобрать массив, это если бы я руками выделял по условию все напротив 1, 2 или 3 и тупо вставить в верхнюю левую ячейку соответствующей таблицы...Мне нельзя формировать таблицы с нуля...Есть форма, но она пустая, в ней набито пустых строк с запасом..., надо просто выделить отобранный массив и вставить, потом удалить пустые строки, и обрамить вставленный ранее массив, ну либо последнюю строку обрамить снизу( ну после которой идёт графа Итог). Мне кажется это самый простой вариант... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:36 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28, Примерно понятно. Не понятно, почему нельзя генерить таблицу? В ней ещё что-то есть? Столбец "Номер" вообще не учитывается? Итого можно сразу при заполнении массива считать - ещё 3 переменных для этого завести. Т.е. таблицы на первом листе легко генерить кодом, это просто. Сложнее сделать заливку - она и впрямь нужна? Лениво прописывать... :) И рамки тоже сложные - в первом варианте проще было. И объединение ячеек... Давайте это Вам домашнее задание? :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:40 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Нет, номер учитывается в таблице №3, куда забиваются данные №1, так :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:44 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
не понял что надо в итоге ..... мой вариант ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:47 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Мой вариант, с старыми рамками, без объединения ячеек: Код: 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. 61. 62. 63. 64. 65. 66. 67. 68. 69. 70. 71. 72. 73. 74. 75. 76. 77. 78. 79. 80. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 22:56 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Hugo121 да Вы точно поняли...все верно номер вставляется в таблицу №3...Генерить таблицу нельзя потому, что из тех трёх что мы с Вами формируем, берутся данные в другие совсем таблицы, они там уже все прописаны, кароче про них лучше не говорить, там все зависит друг от дружки...их лучше не трогать, поэтому задача сводится к тому, чтобы выделить массив соответствующих данных по числу из первого столбца, скопировать их, (как если бы я делал это руками, выделил диапазон и скопировал его) и потом вставить в верхнюю левую ячейку соответствующей таблицы... С обрамлением то есть мысли как решить...мне бы выборку и копирование выбранного диапазона осилить...Может все же вернуться к тому как я пытался это словами описать в виде кода на VBA... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:03 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. Вот можно ли так сделать, НО чтобы диапазон он изначально определял исходя из уже вышеописанных условий...И уж на крайняк три разных макроса для каждой табличке написать и потом и в один объединить выполнением друг за дружкой...Мне бы так сделать..Главное это отобрать этот чертов массив исходя из условий.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:09 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28, фильтр+ рекордер ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:11 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
R Dmitry - Вот да...только я вот в код глянул и чуть не охренел...)) на свой файл я это прилопатить не смогу...но смысл да тот...делать выборку и вставлять в соответсвующие таблицы...Только они уже готовые...их не надо генерировать..Решение уже так близко... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:12 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28, Не маловаты таблицы? Ну если делать моим кодом, то можно так - выгружать не в одну под другой, а в конкретные ячейки, в начало таблицы. Они ведь всегда постоянны, как я понял - выгружаем в шаблон? Тогда и сумму кодом не нужно считать - в шаблон заранее забейте формулу. И рамки с заливкой можно заранее сделать. Далее - нам известно количество выгружаемых строк, следовательно можно определить, какие строки лишние. Или даже проще - забить в шаблон во все потенциально лишние строки например @@@, в конце эти строки удалить с помощью фильтра или цикла снизу вверх по этим символам - в нужных строках они затрутся массивом, в лишних останутся. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:12 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Фильтр - это видимо отбор данных - да Рекордер - я не в теме...не знаю что это... Нужно что то типо буфера...отфильтровал диапазон, скопировал в буфер, и потом вставил в заранее известную ячейку, таблицы то ведь созданы, их не надо генерировать, поэтому изначально самая верхняя левая ячейка каждой таблицы известна.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:15 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Не не в таблицах строк с запасом набито... Да да выгружаем в шаблон...только как мне ячейки в Вашем коде задать начальные для каждой из трех таблиц И сумма все верно уже там формулой считается... И все верно насчет удаления...так и делаю.. у меня там где числа изначально везде 0 стоят вот по ним и фильтрую сверху вниз и удаляю...ну в САМОЙ САМОЙ Общей таблице, в которую как я говорил вообще лучше не лезть, туда и беруться эти данные из наших ТРЕХ сформированных таблиц... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:21 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Реализовал - код во втором модуле. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:23 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
СПАСИБО СПАСИБО, сейчас гляну СПАСИБО СПАСИБО СПАСИБО!!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:25 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Опять забыл рамки отключить... Такой код на выгрузку (вместо приложенного, тут убраны рамки) - тут по-моему не надо объяснять, где адреса ячеек прописаны. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:30 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Я ВАМ АХРЕНИТЕЛЬНО БЛАГОДАРЕН!! Вроде все так, теперь буду разбираться и пробовать на свой шаблон подкорректировать)) Но... я ещё потом вернусь))) У меня есть еще пара идей, и видимо без Вашей помощи мне их никогда не реализовать)) Спасибо ещё раз...Вы просто МОНСТРЫ Экселя!! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:31 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
да с адресами я понял...все таки уже как 2 недели над этой проблемой бился...столько всего уже изучил)))) как ячейки определить - знаю))) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:32 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Что-то я ступил - много от старого кода оставил. Так нужно :) : Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:34 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Ага спасибо еще раз..выгрузку отредактировал) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 24.10.2011, 23:44 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Ну вот появились некоторые шероховатости так сказать...решил пересмотреть все все возможные варианты...и иногда бывает так что таблица с общими данными не генерирует один из массивов данных...например соответственно цифре 1..тоесть идут просто работы с цифрами 2 и 3, а деталей с цифрами 1 нету..в таком случае эксель выкидывает ошибку и прекращает действие кода..обрезки не происходит...подскажите как дополнить код, чтобы если массива соответствующего одной из цифр нету, то продолжить выполнение кода.. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 00:53 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
ну тоесть вообще в первом столбце нету цифр "1" ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 00:54 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28, чтоб не ругалось, если нет 1: Код: plaintext 1. 2. 3. 4. 5. 6. Но вопрос - что делать с таблицей? Можно в это условие ещё дописать удаление всего диапазона строк ненужной таблицы. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:00 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Т.е. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Аналогично и на отсутствие других цифр пропишите. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:04 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Красивее и понятнее так выглядит: Код: plaintext 1. 2. 3. 4. 5. 6. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:06 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Точку забыл перед Rows - нужно ставить, если активным может быть другой лист ( а то удалятся там): Код: plaintext 1. 2. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:08 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
А что значит Rows(43:62) ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:46 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
А блин туплю понял...только это они где удаляются то получается в Первой общей таблице, где все 1 2 3 стоят? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:47 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
все разобрался...Спасибо за помощь! Я там у себя все приладил...Блин летает..три секунды и все по своим местам раскидалось... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 01:50 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Классно, ребят! Игорь, Дима - мой респект. Извините, был занят доселе. И сейчас отрывают:-) Вы оба в привычном вам стиле. Мне нравится. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 02:28 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Утро вечера мудренее... Вчера с удалением немного поторопился. Так, как привёл пример - можно удалять только последнюю таблицу. Если удалять ещё и таблицы выше, то номера строк изменятся. Тогда нужно или вводить переменную, на которую делать поправку при удалении таблиц, и котрую изменять при удалении первой и втрой таблицы (удаление третьей не влияет), или (что в данном случае проще, т.к. шаблон) обозвать диапазоны именами, и удалять имена: Код: plaintext 1. 2. 3. 4. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 09:04 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Хотя чего это я всё усложняю... Нужно просто работать с таблицами снизу вверх - тогда удаление например второй таблицы не повлияет на третью, т.к. она уже будет заполнена. И номера строк тогда можно указывать явно, как я в примере [11492576] привёл - в момент работы с ними они будут на месте. Надеюсь, что Вы так и сделали :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 09:32 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Да, с удалением разобрался...на самом деле все оч круто получилось...как говорится Знание - Сила! Не солгу если скажу ещё раз Вам огромное спасибо и что Вы мне оч помогли! Вот сейчас дела на работе разгребу и чего-нибудь новое в шаблоне придумывать буду)) Вот параллельно думаю как делать окантовку...у меня там В самой самой главной таблице ( а их так же три) уже есть окантовка изначально, они ж там и со строками пустыми с запасом...но когда их удаляешь, то нижняя граница горизонтальная окантовка изчезает...таблицы после удаления соответственно скачут...но как я говорил в каждой таблице после строк с данными идёт строка типо ИТОГА..вот и думаю как если бы это выглядело на языке VBA: ввести переменную, затем найти в какой строке есть слово ИТОГ, затем в этой строке выделить ячейки от A до H (тоесть получается мы выделяем строку с ИТОГОМ и шлёпнуть этому выделению верхнюю горизонтальную линию в обрамлении...как то так)) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 22:07 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
Geo28, типа так - только синтаксис рамки рекордером запишите, тут полужирная тянется: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. И тянется над "итого" - если надо по, то уберите .Offset(-1). ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 25.10.2011, 22:39 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
..попробую Ваш код примастачить на свой шаблон)) О результатах обязательно доложу) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 03:52 |
|
||
|
Помогите ускорить код пожалуйста!
|
|||
|---|---|---|---|
|
#18+
вот так он только нижнюю границу рисует) Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. А это то что и надо)) Ура ура! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 26.10.2011, 04:04 |
|
||
|
|

start [/forum/topic.php?all=1&fid=61&tid=2176354]: |
0ms |
get settings: |
7ms |
get forum list: |
20ms |
check forum access: |
4ms |
check topic access: |
4ms |
track hit: |
169ms |
get topic data: |
8ms |
get forum data: |
2ms |
get page messages: |
103ms |
get tp. blocked users: |
2ms |
| others: | 213ms |
| total: | 532ms |

| 0 / 0 |
