![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 22.09.2014
Сообщений: 27
|
![]()
Здравствуйте!
Столкнулся с таким вопросом. Есть макрос на удаление строк: For Each c In Range("b3:b27") If c = "да" Then c.EntireRow.Delete Shift:=xlUp End If Next По этому макросу удаляются строки, в ячейках которых по столбцу b3:b27 указано значение "да". Однако, если значение "да" указано в идущих подряд ячейках, то строки по этим ячейкам удаляются через одну. Например, значение "да" указано в ячейках b4,b5,b6,b7. В данном примере удалятся строки по ячейкам b4 и b6, а строки по ячейкам b5 и b7 останутся. Можно, конечно, для того, чтобы такого не было, вышеуказанную комбинацию "for each c" в макросе повторить раз 10. Но иногда даже 10 повторений этого цикла недостаточно и приходится постоянно перезапускать макрос. Скажите, пожалуйста, что надо указать в макросе, отличное от варианта повторения комбинации "for each c" несколько раз, чтобы не было такой проблемы. Заранее большое спасибо. |
![]() |
![]() |
![]() |
#2 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]() Код:
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 22.09.2014
Сообщений: 27
|
![]()
Спасибо большое за подсказку. Вот такой макрос в результате получился:
Set ss = Selection For i = 20000 To 1 Step -1 If ss.Cells(i, 1).Value = "да" Then ss.Cells(i, 1).Select Selection.EntireRow.Delete Shift:=xlUp End If Next i |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Не дай бог ошибиться с Selection...
![]()
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
#5 |
Новичок
СтарожилДжуниор
Регистрация: 05.02.2008
Сообщений: 9,487
|
![]()
если "да" на разбросаны хаотично по листу, а припаркованы к одной колонке - то не так уж и страшно))
If ss.Cells(i, 1).Value = "да" Then rows(i).delete
Программисты - это люди, решающие проблемы, о существовании которых Вы не подозревали, методами, которых Вы не понимаете
|
![]() |
![]() |
![]() |
#6 |
Старожил
Регистрация: 11.05.2010
Сообщений: 5,170
|
![]()
Ну может начать перебирать ниже задуманного, и не проверить например все нужные...
webmoney: E265281470651 Z422237915069 R418926282008
|
![]() |
![]() |
![]() |
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Удаление строк по опр условию | 30gb | Microsoft Office Excel | 3 | 14.08.2014 19:12 |
Удаление строк по сложному условию с посимвольным стравнением значений ячеек | Patlyuk | Microsoft Office Excel | 0 | 18.02.2014 09:12 |
Подсчет суммы по условию + удаление строк слагаемых | scratik | Microsoft Office Excel | 4 | 21.06.2011 15:03 |
Excel 2007 автоматическое удаление старых строк при потоковом поступлении новых | Swindler_1 | Microsoft Office Access | 5 | 17.03.2010 21:30 |
Удаление строк массива по условию | Lexakazanskij | Паскаль, Turbo Pascal, PascalABC.NET | 9 | 12.09.2007 20:32 |