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

 

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

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

Excel 2013
Здравствуйте! У меня вопрос по удалению строк из файла, удовлетворяющие конкретному условию
Есть код:

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



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

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

Ну что то такое наверное:

IIf (a(i,9)<>200, Rows(i).Delete,"")



В коде не силен, не судите строго, пытался написать сам, как правильно написать подобную строку, и где именно ее нужно разместить чтоб не писать дополнительны цикл по строкам, так сказать минимизировать код
 
Ответить
СообщениеЗдравствуйте! У меня вопрос по удалению строк из файла, удовлетворяющие конкретному условию
Есть код:
[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
Группа: Админы
Ранг: Местный житель
Сообщений: 19516
Репутация: 4632 ±
Замечаний: ±

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, здравствуйте

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



Ю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 = Тrue End Sub
[/vba]

Автор - Serge_007
Дата добавления - 30.09.2015 в 20:13
  • Страница 1 из 1
  • 1
Поиск:

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