1

Какой код VB или макрос для выполнения этого -

предыдущий вопрос из месяцев назад

«3 условия» ниже определенного процента / числа.«Это должно соответствовать всем условиям».

не показался достаточно конкретным, поэтому были запрошены подробности, например,

если А2 <20%
если B2> 30%
если C2> 10
если все вышеперечисленные 3 условия выполнены
удалить строку 2

весь этот процесс повторяется на каждом последующем ряду

2 ответа2

2

Вот пример кода, чтобы сделать то, что вы сказали, используйте .2 как 20% и т.д., Потому что это фактическое значение. Замените Листы (1) фактическим листом, на котором вы это делаете.

Sub DeleteRows()
    Dim x As Long
    With Sheets(1)
        For x = .UsedRange.Rows.Count To 2 Step -1
            If .Cells(x, 1) < 0.2 And .Cells(x, 2) > 0.3 And .Cells(x, 3) > 10 Then
                .Rows(x).Delete
            End If
        Next
    End With
End Sub
0

Цикл будет работать, но автофильтр будет работать намного быстрее. Предполагая, что у вас есть заголовки в строке (1) и нет пустых строк, это удалит строки, соответствующие вашим критериям:

Sub autofilterAndDelete()
dim lLastRow as long
application.screenupdating=false

lLastRow=cells(rows.count,1).end(xlup).row

With Range("A1:C1").resize(lLastRow)
    .AutoFilter field:=1, Criteria1:="<0.2"
    .AutoFilter field:=2, Criteria1:=">.3"        
    .AutoFilter field:=3, Criteria1:=">10"

    if application.worksheetfunction.subtotal(3,.columns(1))>1 then _
        .Resize(.Rows.Count - 1).Offset(1).SpecialCells(xlCellTypeVisible).EntireRow.Delete

    .AutoFilter
End With
application.screenupdating=true    
End Sub

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .