Страницы: 1
RSS
Макрос. Если ячека = значение, Удалить строку
 
Помогите, пожалуйста!
Мне нужен макрос, который будет по значению в колонке В удалять полностью строку. Главное условие, что значения В (примерно 15 разных), могут в данном конктретном списке отсутвовать.
Например, во вложенном файле таблица. В колонке "В - Document Type" некие значения. Нужно проверить удалить строки, в которых в колонке В есть значение ZF8, ZB3G или ZF5. Последние значение как раз отсутствует в списке.
 
Код
Sub Macro1()
Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row
    For i = LastRow To 2 Step -1
         If Cells(i, 2) = "ZF8" Or Cells(i, 2) = "ZB3G" Or Cells(i, 2) = "ZF5" Then Rows(i).Delete
    Next
End Sub
 
Спасибо ОГРОМНОЕ! Очень помогли!!!!
 
Помогите, подправить макрос так, чтобы он удалял только последнюю строку. В ней нет данных, только формулу почему-то копирует "умная таблица". Вот ее то и нужно удалить.

А вообще, может кто знает. Мой макрос (другой) копирует данные в конец "умной" таблицы, и автоматически создается вот такая пустая строка с скопированной в нее формулой. Это можно как то исправить и не заморачиваться с удалением этой строки?
Код
Sub Удаление()

    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, "E").End(xlDown).Row
    For i = LastRow To 2 Step -1
         If Cells(i, "E") = "mistake" Then Rows(i).Delete
    Next
    
End Sub

Sub Копирование()
    Dim sh_src As Worksheet, sh_res As Worksheet
    Set sh_src = Workbooks("Invoices for Reports.xlsm").Worksheets("Invoices")
    Set sh_res = Workbooks("FWS BDF.xlsx").Worksheets("Invoices")
    sh_src.UsedRange.Offset(1, 0).Copy sh_res.[A1].End(xlDown)(2)

End Sub
Изменено: Мария - - 10.05.2019 16:13:23
 
В Вашем файле неправильно определяется номер последней заполненной строки: посмотрите, чему равно значение переменной LastRow.
Поправил условие проверки:
Код
Sub Macro1()
    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, "E").End(xlUp).Row
    For i = LastRow To 2 Step -1
         If Cells(i, "E").Value = "mistake" Then Rows(i).Delete
    Next
End Sub
Если нужно удалять ТОЛЬКО последнюю, то просто добавьте выход из процедуры:
Код
Sub Macro1()
    Dim LastRow As Long, i As Long
    LastRow = Cells(Rows.Count, "E").End(xlUp).Row
    For i = LastRow To 2 Step -1
        If Cells(i, "E").Value = "mistake" Then
            Rows(i).Delete
            Exit Sub 'Выходим из процедуры
        End If
    Next
End Sub
Второй вопрос не по теме, но ведь можно после копирования просто очищать ячейку.
 
Юрий М, Спасибо Вам ОГРОМЕННОЕ!!!!!!!!
 
Бегом на укладку! )
 
Я боюсь, в моем случае одной укладкой не обойтись  :D  :D  :D  Тут нужен полный комплект и смена цвета (с блондинки на брюнетку) )))))
Страницы: 1
Наверх