Exclua todas as linhas ou colunas, se todas as condições forem atendidas

1

Qual é o código VB ou macro para executar isso -

a pergunta anterior de meses atrás

"As 3 condições estão" abaixo de uma determinada porcentagem / número ". Tem que satisfazer todas as condições ".

não parecia específico o suficiente para que os detalhes fossem solicitados, por exemplo

se A2 for < 20%
se B2 for > 30%
se C2 for > 10
se todas as 3 condições acima forem satisfeitas. excluir linha 2

todo este processo é repetido em todas as linhas subsequentes

    
por kittensatplay 04.10.2012 / 20:20

2 respostas

0

Um loop funcionará, mas um autofiltro funcionará muito mais rápido. Supondo que você tenha cabeçalhos na linha (1) e nenhuma linha vazia, isso excluirá as linhas que atendem aos seus critérios:

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
    
por 04.10.2012 / 20:59
2

Aqui está um código de exemplo para fazer o que você disse, use .2 como 20% etc, porque esse é o valor real. Folhas Substitutas (1) com a folha atual em que você está fazendo isso.

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
    
por 04.10.2012 / 20:31