Ir ao conteúdo

Posts recomendados

Postado

Bom dia,

 

Em anexo segue uma planilha com as informações. Eu preciso que todas as linhas inteiras que contenham informações na aba "Scopo" (verificando através da coluna "I") que fossem da data inferior ou superior a data  que eu informei na aba "Dash", célula "B1" sejam excluídas. Ou seja, se na aba "Dash" eu coloque "05/05/2020", então todas as linhas de informações da aba "Scopo" que na coluna "I" qualquer data seja diferente de 05/05/2020, sejam as datas 03/05/2020,04/05/2020 ou 06/05/2020 as linhas inteiras seriam apagadas.

Pasta1.xlsx

Postado

Tente isso:

 

Function DeleteRowsByCriteria(ByVal firstRow As Integer, ByVal lastRow As Integer, ByVal criteriaColumn As Integer, ByVal criteria As String) As Integer
'https://www.tomasvasquez.com.br/blog/microsoft-office/excel-vba-excluir-linhas-de-acordo-com-um-criterio/
'O que ele faz efetivamente é, receber 4 parâmetros, sendo eles:
'índice da linha inicial de busca
'índice da linha final de busca
'índice da coluna onde se deve buscar o critério
'valor do critério no formato de string
    Dim deletedRows As Integer
    Dim i As Integer
    deletedRows = 0
    With ActiveSheet
        i = firstRow
        While i < lastRow
            If CStr(.Cells(i, criteriaColumn).Value) <> criteria And CStr(.Cells(i, criteriaColumn).Value) <> "" Then
                .Rows(i).Delete
                deletedRows = deletedRows + 1
            Else
                i = i + 1
            End If
        Wend
    End With
    DeleteRowsByCriteria = deletedRows
    
End Function

Sub Execute()
Dim P As String, C As String
Planilha1.Activate
    P = Planilha1.Cells(Rows.Count, "I").End(xlUp).Row
Planilha4.Activate
    C = Planilha4.Range("B1")
Planilha1.Activate
    MsgBox DeleteRowsByCriteria(1, P, 9, C) & " Linhas deletadas"
End Sub

Postado

O último arquivo que você anexou tem planilhas com nomes diferentes. Substitua a Sub Execute:

 

Sub Execute()
Dim P As String, C As String
Plan4.Activate
    P = Plan4.Cells(Rows.Count, "I").End(xlUp).Row
Plan5.Activate
    C = Plan5.Range("B1")
Plan4.Activate
    MsgBox DeleteRowsByCriteria(1, P, 9, C) & " Linhas deletadas"
End Sub

  • Curtir 1
Postado

 

Experimente:

 

Sub ExcluiLinhas()
 With Sheets("Scopo")
  .AutoFilterMode = False
  .[A1:I1].AutoFilter 9, "<>" & CLng(Sheets("Dash").[B1])
  .Range("A1:I" & .Cells(Rows.Count, 1).End(3).Row).EntireRow.Delete
  .AutoFilterMode = False
 End With
End Sub

No seu exemplo serão excluídos 98 registros e restarão 31.

Postado

Muito obrigado pela ajuda, porém a planilha está gerando erro caso eu tenha apenas 1 linha com valores entre outras linhas com valores de um dia diferente. Por exemplo na planilha em anexo tenho 10 linhas do dia 07/05 e uma linha do dia 08/05 e quero que exclua apenas a linha 08/05.Teste.zip

 

@Muca Costa  - Se eu tiver apenas 1 linha com valor divergente (08/05/2020) o código não exclui a linha. Caso eu tenha mais de uma linha com valores divergente o código exclui ambas as linhas divergentes.

 

@osvaldomp  - A planilha exclui a linha com valor divergente,porém exclui a primeira linha também. 

 

 

Arquivo preenchido em anexo.

 

Grato

Postado
3 horas atrás, Luis Geraldo disse:

 

@osvaldomp  - A planilha exclui a linha com valor divergente,porém exclui a primeira linha também. 

 

 

Substitua por este abaixo.

Sub ExcluiLinhas()
 With Sheets("Scopo")
  If Application.CountIf(.Range("I1:I" & .Cells(1, 9).End(4).Row), "<>" & CLng(Sheets("Dash").[B1])) = 0 Then Exit Sub
  .Rows(1).Insert
  .AutoFilterMode = False
  .[A1:I1].AutoFilter 9, "<>" & CLng(Sheets("Dash").[B1])
  .Range("A2:I" & .Cells(Rows.Count, 1).End(3).Row).EntireRow.Delete
  .AutoFilterMode = False
  .Rows(1).Delete
 End With
End Sub

 

Crie uma conta ou entre para comentar

Você precisa ser um usuário para fazer um comentário

Criar uma conta

Crie uma nova conta em nossa comunidade. É fácil!

Crie uma nova conta

Entrar

Já tem uma conta? Faça o login.

Entrar agora

Sobre o Clube do Hardware

No ar desde 1996, o Clube do Hardware é uma das maiores, mais antigas e mais respeitadas comunidades sobre tecnologia do Brasil. Leia mais

Direitos autorais

Não permitimos a cópia ou reprodução do conteúdo do nosso site, fórum, newsletters e redes sociais, mesmo citando-se a fonte. Leia mais

×
×
  • Criar novo...