|
|
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#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. копирую столбцы только с определенными названиями ("Месяц", "Работник1", "Авто", "xp") с одного листа в другой - всё это в одном и том же файле. Макрос не работает. Подскажите, пожалуйста, где и на что исправить, чтобы заработало? Файл приложил. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 15:00:47 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
На этом форуме уже ни раз говорилось, что не стоит использовать Select без особой нужды, и ещё алгаритм с методом find гораздо быстрее работает (проверено врнменем). Код: 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. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 16:04:06 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodorНа этом форуме уже ни раз говорилось, что не стоит использовать Select без особой нужды, и ещё алгаритм с методом find гораздо быстрее работает (проверено врнменем). Большое спасибо! Копируются все столбцы по заданным параметрам. Только вот после вставки в листе =H bb= 1-й столбец пустой. Это исправляю вот этим: Код: plaintext 1. А всё-таки, почему появляется пустой столбец? А здесь что происходит? Код: plaintext 1. 2. 3. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 16:57:39 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBETЭто исправляю вот этим: Код: plaintext 1. как-то не красиво, ну тебе выбирать, только начни хотябы не использовать "select" Код: plaintext а лучше Код: plaintext Код: plaintext Код: plaintext nPUBET А всё-таки, почему появляется пустой столбец? дело в том что строка Код: plaintext вернет "1" и при заполненом столбце и при пустом (увы прими как должное) лучше наверно так Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. Код: plaintext 1. 2. 3. Спомощью метода Find c параметрами искать "ячейку целиком" (LookAt:=xlWhole) и "Учитывать регистр" (MatchCase:=True) мы ищем значение mList(i) (которое переберается по очереди) и присваиваем обьектной переменной "rng" найденую ячейку, а дальше проверяем её на Nothing ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:26:28 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
если количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4): Код: plaintext 1. 2. 3. 4. выходит ошибка 9 и код перестаёт копировать. Как эту ошибку устранить? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:28:10 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBETесли количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4): Код: plaintext 1. 2. 3. 4. выходит ошибка 9 и код перестаёт копировать. Как эту ошибку устранить? В начале мы обьявили массив, измени размерность массива ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:30:23 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodor nPUBETесли количество параметров mList(i) увеличиваю до 4 (т.е. i=0,1,2,3,4): выходит ошибка 9 и код перестаёт копировать. Как эту ошибку устранить? В начале мы обьявили массив, измени размерность массива OK. Большое спасибо! ...понял Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:34:42 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodor ..... .... nPUBET А всё-таки, почему появляется пустой столбец? дело в том что строка Код: plaintext вернет "1" и при заполненом столбце и при пустом (увы прими как должное) тоже хорошо :) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:38:51 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
Пардон, читать так vkodor дело в том что строка Код: plaintext вернет "1" и при заполненом первом столбце и при пустом (увы прими как должное) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:41:24 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. Код: plaintext А почему в этих 2-х случаях выходит ошибка ' 91 ' ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:47:46 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBET Код: plaintext 1. Код: plaintext А почему в этих 2-х случаях выходит ошибка ' 91 ' ? если переменная "xlSh2" определена, то нет никакой ошибки наверно ставишь до строки Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 17:59:57 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodor ...если переменная "xlSh2" определена, то нет никакой ошибки наверно ставишь до строки Код: plaintext Ты абсолютно прав... (те 2 варианта строк были действительно выше, т.е. до назначения переменной xlSh2) ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 18:29:59 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#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. код удаляет строки, если значеня в ячейках столбцов с 6-го по 9-й равны (эти ячейки у меня равны 0, но условие равны нулю не смог сформулировать). Так вот для удаления этих пустых строк я должен постоянно кликать на кнопку запуска макроса, иначе не идёт. Подскажите, пожалуйста, как сформулировать шаг цикла: удаляю строки, если значеня в ячейках столбцов с 6-го по 9 - й равны (=если есть идеи, то= нулю)? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 19:06:09 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBET Код: plaintext код удаляет строки, если значеня в ячейках столбцов с 6-го по 9-й равны (эти ячейки у меня равны 0, но условие равны нулю не смог сформулировать). Так вот для удаления этих пустых строк я должен постоянно кликать на кнопку запуска макроса, иначе не идёт. Подскажите, пожалуйста, как сформулировать шаг цикла: удаляю строки, если значеня в ячейках столбцов с 6-го по 9 - й равны (=если есть идеи, то= нулю)? Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. даже так не помогает... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 11.09.2007, 19:39:37 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
Попробуй такой алгоритм. При выполнении условия не удалять строку а накапливать их в некую переменную, а после выполнения цикла разом удалить все строки. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 09:53:20 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
Спасибо! С нулями код у меня не работает. Не знаю, почему. Может дело в формате ... Т.е запускаю макрос - никаких движений (пустые строки не удаляются, никаких изменений в таблице не происходит), даже ошибки не выдаёт. А вот так, прохoдит: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. И скорость приличная. Еще раз спасибо! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 11:00:18 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
если ячейки пустые, то условие пишут так Код: plaintext то так Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 11:18:46 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. удаляю строки, если ячейки в 3-ем столбце содержат значение "C101*" (т.е. C101 плюс какой-то текст или какие-то цифры). Не удаляется (ни ошибки, ни движний)... Пробовал 2 варианта: - вместе через =OR= (как наверxу) - отдельно через = if ..then... end if= (строки помечены *) Где я не так сформулировал? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 11:37:44 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
нужно использовать оператор Like Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 11:58:19 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodorнужно использовать оператор Like Код: plaintext Код: plaintext Спасибо! Вот так работает: Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 12:03:54 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#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. Всё обьединил. Обрабатываю около 800 строк. Операция занимает примерно 3 минуты (Excel 2003). Это нормально? Можно, как-нибудь ускорить процесс? P.S. Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=. Приходится опять несколько раз кликать на =ComButton=... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 12:35:15 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBET Это нормально? Можно, как-нибудь ускорить процесс? Нормально ли это? Вам решать. У каждого свои запросы. Ускорить можно. 1. Если делаешь два пробега то, не надо использовать Код: plaintext Код: plaintext 3. лучше делать все в одном пробеге Код: 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. nPUBET P.S. Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=. Приходится опять несколько раз кликать на =ComButton=... Естественно. Сами подумайте вот код: Код: plaintext 1. 2. 3. 4. Повторюсь, используйте алгоритм накопления. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 13:56:33 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBET.... Всё обьединил. Обрабатываю около 800 строк. Операция занимает примерно 3 минуты (Excel 2003). Это нормально? Можно, как-нибудь ускорить процесс? P.S. Еще заметил, что =Sub del_C= не удаляет с одного раза все =*C101*=. Приходится опять несколько раз кликать на =ComButton=... знаете, что я придумал... Я заменил Код: plaintext Код: plaintext включил сортировку по 3-ему столбцу. Вот мои замеры скорости (применяю Like, около 800 строк): 1. Вариант с =Delete=: 00:05:39 - 00:09:31. 2. Вариант с =ClearContents= плюс сортировка: 00:03:44 - 00:05:11. Значительная экономия времени :) Подскажите, пожалуйста, как заполнить все ячейки (кроме А1) до =ActiveSheet.UsedRange.Rows.Count= в 1-ом столбце значением "Сентябрь" ? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 14:02:24 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
vkodor..... Повторюсь, используйте алгоритм накопления. Спасибо! изучаю... ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 14:05:35 |
|
||
|
копия определённых столбцов
|
|||
|---|---|---|---|
|
#18+
nPUBET Подскажите, пожалуйста, как заполнить все ячейки (кроме А1) до =ActiveSheet.UsedRange.Rows.Count= в 1-ом столбце значением "Сентябрь" ? Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 12.09.2007, 14:11:06 |
|
||
|
|

start [/forum/topic.php?fid=61&msg=34792572&tid=2182275]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
21ms |
get topic data: |
7ms |
get forum data: |
1ms |
get page messages: |
49ms |
get tp. blocked users: |
1ms |
| others: | 195ms |
| total: | 295ms |

| 0 / 0 |
