![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 20
|
![]()
Помогите решить оду задачку, вижу ошибку но не знаю как ее решить. Мне надо удалить определенные диапазоны строк но я не силен в свойствах Rows и мне все время выдает ошибку. кусок кода здесь, а строки должны удаляться так 3-6, затем 4-7, 5-8 и так далее до тех пор пока не кончаться значения в столбце A.
p = 3 Do While Range("A" + Trim(Str(p))).Value <> "" Rows(p, p + 3).Select Selection.Delete Shift:=xlUp p = p + 1 Loop |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
а напишите-ка вместо вашего кода такую строку:
Range([a3], [a3].End(xlDown)).Delete
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 20
|
![]() |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Если до меня правильно дошёл смысл задачи, то можно попробовать вместо красной строки такое:
For i = 1 To 4 Rows(p).Select |
![]() |
![]() |
![]() |
#5 |
Старожил
Регистрация: 05.12.2007
Сообщений: 4,180
|
![]()
Я бы сделал так:
Код:
Чем шире угол зрения, тем он тупее.
Последний раз редактировалось SAS888; 16.04.2009 в 05:40. |
![]() |
![]() |
![]() |
#6 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 20
|
![]() |
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 20
|
![]()
Не получилось, exel просто повис и все, пришлось жестко выгружать. У меня около 42 000 строк в результате этой операции должно остаться 8 000
|
![]() |
![]() |
![]() |
#8 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
В данном варианте начиная с 3 строки удаляются диапазоны по 4 строки, т.е. каждая пятая остаётся.
Sub Udalenie() p = 3 Do While Range("A" + Trim(Str(p))).Value <> "" For i = 1 To 4 Rows(p).Select Selection.Delete Shift:=xlUp Next i p = p + 1 Loop End Sub или опять не то? |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 15.04.2009
Сообщений: 20
|
![]()
Да это работает, единственное занимает достаточно много времени. Может возможно как то ускорить ??? У меня около 52 000 строк оказалось, и эта работа где то за час укладываеться.
Последний раз редактировалось Vik-00; 16.04.2009 в 17:09. |
![]() |
![]() |
![]() |
#10 |
Форумчанин
Регистрация: 03.04.2009
Сообщений: 412
|
![]()
Попрбуй это:
Sub Udalenie() Application.ScreenUpdating = False p = 3 Do While Range("A" + Trim(Str(p))).Value <> "" Range(Cells(p, 1), Cells(p + 3, 1)).Select Selection.EntireRow.Delete p = p + 1 Loop Application.ScreenUpdating = True End Sub У меня 65000 строк обрабатывал около 2-3 минут |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
удаление строк | alexk | Microsoft Office Excel | 24 | 15.02.2011 08:34 |
Удаление из ListBox строк | S.T.A.L.K.E.R. | Общие вопросы Delphi | 2 | 27.09.2009 05:15 |
Удаление строк из Memo | Leksda | Общие вопросы Delphi | 6 | 20.03.2009 15:31 |
Удаление строк | Dr.Badnezz | Общие вопросы Delphi | 1 | 07.10.2008 15:22 |
удаление строк | Dime_x | Microsoft Office Excel | 2 | 07.10.2008 13:38 |