Страницы: 1
RSS
Как удалить строки по условию
 
Если а10 - пусто, то удалить строку 10
перейти в а11, если а11 пусто, то удалить строку 11
а вот если а10 и а11 не пусто, то ничего не делать, а просто проверять следующее
И так до а700


Опишите это на языке макроса пожалуйста. Заранее огромное спасибо!
 
как то так

Код
for i = 10 to 700
   if cells(i,1).value ="" then
      rows(i).delete
   end if
next i
 
Цитата
Dmitriy_81 пишет:
как то так
Dmitriy_81, ну хоть проверили бы...
такой "кактотак" может половину строк пропустить.
фрилансер Excel, VBA - контакты в профиле
"Совершенствоваться не обязательно. Выживание — дело добровольное." Э.Деминг
 
Описать то описали... Но не учли, что при удалении строки 10 на её место встанет строка 11. И когда Вы будете анализировать строку 11 - на самом деле это будет бывшая строка 12... :(
т.е. нужно или корректировать что смотрим, или (что проще) идти снизу вверх

for i = 700 to 10 step -1
 
Согласен, поторопился немного :(
 
А у меня в таком виде макрос не запускается.. =(
С исправлением от Hugo.
Видимо заголовок какой-то должен быть.

if cells(i,1).value ="" then    - горит красным.

Уж простите, новичок совсем.
 
Цитата
Sub vsjeravnokakoenazvanie()
Application.ScreenUpdating = False
   For i = 700 To 10 Step -1
       If Cells(i, 1).Value = "" Then
           Rows(i).Delete
       End If
   Next i
Application.ScreenUpdating = True
End Sub

Убрать в красных строках символ (квадрат скорее всего) перед Value - это косяк движка форума!
Ну и ещё полезно отключить обновление экрана - чтоб не мигало и быстрее работало.
На практике ещё может понадобиться отключать пересчёт и события... Ну это уже по ситуации.
 
Еще можно статью покурить: Как удалить строки по условию?
Даже самый простой вопрос можно превратить в огромную проблему. Достаточно не уметь формулировать вопросы...
 
На основании изученного сделал ещё один макрос. Проверьте пожалуйста, что-то не работает!
Цитата
Sub очистка()
Application.ScreenUpdating = False
For i = 700 To 10 Step -1
If Cells(i, 6).Value = "снеговик", "марковка"
Then Сell(i.6).Clear
End If
Next i
Application.ScreenUpdating = True
End Sub

Задача в столбце f или 6 очистить ячейку, если в ней присутствует слово снеговик или марковка.
Какие синтаксические ошибки я допустил? Спасибо!
 
1.If Cells(i, 6).Value = "снеговик", "марковка"
Then
так не пойдёт. Проверяйте сперва на одно значение, затем на второе. Способов много, например вложенные IF, или Select Case True
Ну и Then зачем перенесли?
1а - грамматику тоже нужно учитывать  :)
2. Then Сell(i.6).Clear - запятая!
10. Ну если не удаляете строку, а очищаете - нет необходимости идти снизу вверх.
Изменено: Hugo - 05.02.2013 15:24:14
 
Цитата
Sub очистка()
Application.ScreenUpdating = False
For i = 10 To 700
If Cells(i, 6).Value = "снеговик" Then
Сell(i, 6).Clear
End If
Next i
Application.ScreenUpdating = True
End Sub


Подправил! Вот только про "запятая" не соображу,
Ведь у вас после "Rows(i).Delete" запятых нет.
Ну и не работает! После запуска выскакивает окошко..
Run-time error 13.
Кстати, что оно означает? =)
Изменено: GacRux - 05.02.2013 15:38:37
 
Сell(i.6) - тут должна быть не точка, а запятая! Уже исправились правда....
Ну и "s" забыли - потому и Run-time error 13.
Изменено: Hugo - 05.02.2013 15:42:00
 
О чудо, действительно всё заработало!
Вот только один момент. Очищается как значение в ячейке, так и закрашенные границы. Возможно ли оставить закрашенные границы? Таблица разлинована.
 
Сells(i, 6).ClearContents
 
Всем спасибо! Со всеми проблемами справился!
 
off: но если кто-то напишет в ячейке не "мАрковка", а "мОрковка" то макрос это не обнаружит и ячейку не очистит.
Страницы: 1
Наверх