Домашняя страница Undo Do New Save Карта сайта Обратная связь Поиск по форуму
МИР MS EXCEL - Гость.xls

Вход

Регистрация

Напомнить пароль

 

= Мир MS Excel/Удаление строк по условию циклом по всему листу - Мир MS Excel

Старая форма входа
  • Страница 1 из 1
  • 1
Модератор форума: китин, _Boroda_  
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк по условию циклом по всему листу (Макросы/Sub)
Удаление строк по условию циклом по всему листу
si Дата: Среда, 30.09.2015, 17:34 | Сообщение № 1
Группа: Пользователи
Ранг: Прохожий
Сообщений: 4
Репутация: 0 ±
Замечаний: 0% ±

Excel 2013
Здравствуйте! У меня вопрос по удалению строк из файла, удовлетворяющие конкретному условию
Есть код:
[vba]
Код
Sub Main()
     Dim i As Long, a(), b(): Application.ScreenUpdating = False
     a = Range([AH1], Cells(Cells(Rows.Count, 1).End(xlUp).Row, 4)).Value: ReDim b(1 To UBound(a, 1), 1 To 1)       
     For i = 1 To UBound(a, 1): b(i, 1) = IIf(a(i, 1) <> "", "Фамилия.:" & a(i, 1) & ", ", "") & IIf(a(i, 2) <> "", "Имя: " & a(i, 2) & ", ", "") & IIf(a(i, 3) <> "", "Отчество:" & a(i, 3) & ", ", "") & IIf(a(i, 4) <> "", "Марка авто:" & a(i, 4), ""): Next
     Range([E2], Cells(UBound(b, 1) + 1, 5)).Value = b
End Sub
[/vba]

Хотелось бы перед тем как объединять столбцы в файле, проверить строки на заполненость столбца под номером 9 на значение 200, и удалить все строки которые содержат иное значение. Не могу разобраться какой именно код должен быть для этого и в каком месте его лучше разместить, так чтоб синтаксис не нарушить.

В файле существует группировка, мало ли это важно.

Ну что то такое наверное:
[vba]
Код
IIf (a(i,9)<>200, Rows(i).Delete,"")
[/vba]

В коде не силен, не судите строго, пытался написать сам, как правильно написать подобную строку, и где именно ее нужно разместить чтоб не писать дополнительны цикл по строкам, так сказать минимизировать код
 
Ответить
СообщениеЗдравствуйте! У меня вопрос по удалению строк из файла, удовлетворяющие конкретному условию
Есть код:
[vba]
Код
Sub Main()
     Dim i As Long, a(), b(): Application.ScreenUpdating = False
     a = Range([AH1], Cells(Cells(Rows.Count, 1).End(xlUp).Row, 4)).Value: ReDim b(1 To UBound(a, 1), 1 To 1)       
     For i = 1 To UBound(a, 1): b(i, 1) = IIf(a(i, 1) <> "", "Фамилия.:" & a(i, 1) & ", ", "") & IIf(a(i, 2) <> "", "Имя: " & a(i, 2) & ", ", "") & IIf(a(i, 3) <> "", "Отчество:" & a(i, 3) & ", ", "") & IIf(a(i, 4) <> "", "Марка авто:" & a(i, 4), ""): Next
     Range([E2], Cells(UBound(b, 1) + 1, 5)).Value = b
End Sub
[/vba]

Хотелось бы перед тем как объединять столбцы в файле, проверить строки на заполненость столбца под номером 9 на значение 200, и удалить все строки которые содержат иное значение. Не могу разобраться какой именно код должен быть для этого и в каком месте его лучше разместить, так чтоб синтаксис не нарушить.

В файле существует группировка, мало ли это важно.

Ну что то такое наверное:
[vba]
Код
IIf (a(i,9)<>200, Rows(i).Delete,"")
[/vba]

В коде не силен, не судите строго, пытался написать сам, как правильно написать подобную строку, и где именно ее нужно разместить чтоб не писать дополнительны цикл по строкам, так сказать минимизировать код

Автор - si
Дата добавления - 30.09.2015 в 17:34
Pelena Дата: Среда, 30.09.2015, 18:50 | Сообщение № 2
Группа: Админы
Ранг: Местный житель
Сообщений: 19174
Репутация: 4413 ±
Замечаний: ±

Excel 365 & Mac Excel
si, шансы получить ответ существенно возрастут, если вы приложите файл с примером


"Черт возьми, Холмс! Но как??!!"
Ю-money 41001765434816
 
Ответить
Сообщениеsi, шансы получить ответ существенно возрастут, если вы приложите файл с примером

Автор - Pelena
Дата добавления - 30.09.2015 в 18:50
Serge_007 Дата: Среда, 30.09.2015, 20:13 | Сообщение № 3
Группа: Админы
Ранг: Местный житель
Сообщений: 16475
Репутация: 2749 ±
Замечаний: ±

Excel 2016
si, здравствуйте

[vba]
Код
Sub Delete_Rows()
Application.ScreenUpdating = False
     Dim LastRow As Long
     LastRow = Cells(Rows.Count, 2).End(xlUp).Row
         For i = LastRow To 1 Step -1
             If Cells(i, 6) <> 200 Then Rows(i).Delete
         Next i
Application.ScreenUpdating = True
End Sub
[/vba]


ЮMoney:41001419691823 | WMR:126292472390
 
Ответить
Сообщениеsi, здравствуйте

[vba]
Код
Sub Delete_Rows()
Application.ScreenUpdating = False
     Dim LastRow As Long
     LastRow = Cells(Rows.Count, 2).End(xlUp).Row
         For i = LastRow To 1 Step -1
             If Cells(i, 6) <> 200 Then Rows(i).Delete
         Next i
Application.ScreenUpdating = True
End Sub
[/vba]

Автор - Serge_007
Дата добавления - 30.09.2015 в 20:13
Мир MS Excel » Вопросы и решения » Вопросы по VBA » Удаление строк по условию циклом по всему листу (Макросы/Sub)
  • Страница 1 из 1
  • 1
Поиск:

Яндекс.Метрика Яндекс цитирования
© 2010-2024 · Дизайн: MichaelCH · Хостинг от uCoz · При использовании материалов сайта, ссылка на www.excelworld.ru обязательна!