Gostaria de saber se posso criar uma fórmula para excluir uma linha que contenha uma data somada de 30 dias.

Anônima
2014-06-18T13:12:35+00:00

Quero criar uma lista de atividades, com uma data em A1 e a descrição da atividade em B1 e inserir uma fórmula para excluir a linha 1 (A1 e B1) se a data atingir 30 dias. Ou seja, ao abrir a pasta de trabalho as linhas que tiverem completadas 30 dias já estarão excluídas.

Microsoft 365 e Office | Excel | Para uso doméstico | Windows

Pergunta bloqueada. Essa pergunta foi migrada da Comunidade de Suporte da Microsoft. É possível votar se é útil, mas não é possível adicionar comentários ou respostas ou seguir a pergunta.

0 comentários Sem comentários
Resposta aceita pelo autor da pergunta
Anônima
2014-06-18T14:28:39+00:00

Olá André!

Não considero como uma boa prática no Excel apagar os valores da forma que você descreveu, pois você perderá todo o histórico de suas atividades. E falando sobre a sua pergunta, através de fórmula não é possível excluir linhas, o que você pode fazer é criar em outra planilha um relatório que te liste somente as atividades que ainda não completaram 30 dias.

Caso queira mesmo apagar as linhas, a sua necessidade só pode ser atendida através de algum código em VBA. Segue um exemplo de código abaixo para o modelo de tabela da imagem que contém na coluna C o cálculo dos dias corridos (fórmula em C2: =HOJE()-A2) :

Aperte ALT + F11 para abrir o VBA, localize do lado esquerdo a opção "Estapasta_de_trabalho" do arquivo que você está trabalhando, dê duplo clique para abrir a área de edição de código desta planilha e digite insira o Código VBA:

O código em texto é:

Private Sub Workbook_Open()

Sheets("Plan1").Select

Range("C1").Select

Do Until ActiveCell.Value = ""

If ActiveCell.Value >= 30 And IsNumeric(ActiveCell.Value) = True Then

 ActiveCell.Rows("1:1").EntireRow.Select

    Selection.Delete Shift:=xlUp

 ActiveCell.Offset(0, 2).Range("A1").Select

Else

ActiveCell.Offset(1, 0).Range("A1").Select

End If

Loop

Range("A1").Select

End Sub

Caso sua planilha de valores não seja "Plan1" é preciso substituir o nome na linha de código.

Mas ainda sou a favor de você trabalhar com a criação de outros relatórios na planilha do que VBA. Para que o código fique salvo no arquivo você deve salvar o arquivo como Pasta habilitada para macro do Excel.

Abraços!

Esta resposta foi útil?

0 comentários Sem comentários

12 respostas adicionais

Classificar por: Mais útil
  1. Anônima
    2015-04-15T03:43:43+00:00

    Obrigado, abraços!

    Ola pessoal, bom dia.

    Sou iniciante em VBA e estava vendo no forum alguns itens interessantes para que futuramente possa aplicar em meus programas e deparei com esse topco que estava bem explicado e detalhado e testei para ver como funciona, mas ficou uma duvida.

    Quando na coluna C "Dias Corridos" na linha 4 por exemplo que e de 34dias, a rotina vai ate a celula C4 deleta e depois na etapa seguinte " ActiveCell.Offset(0, 2).Range("A1").Select" sai da coluna C e se essa coluna for "" o programa encerra a rotina sem deletar a linha5 que e de 33dias.

    1-Sera que o codigo do programa " ActiveCell.Offset(0, 2).Range("A1").Select" esta a mais ou tem outra          finalidade?

    2-Na linha do If "If ActiveCell.Value >= 30 And IsNumeric(ActiveCell.Value) = True Then", qual seria a              diferenca se tirasse a condicao And e escrevesse "If ActiveCell.Value >= 30 Then".

    3-Na linha seguinte "ActiveCell.Rows("1:1").EntireRow.Select", se vai selecionar so a linha da celula ativa,         porque coloca o Rows("1:1").

    Desde ja agradeco

    Tadao

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2014-06-20T14:22:43+00:00

    Obrigado, abraços!

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2014-06-20T12:36:40+00:00

    Como já foi citado acima,

    em vez de começar o código com:

    Sub Nome_da_macro ()

    comece o código com:

    Private Sub Workbook_Open()

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2014-06-19T21:34:16+00:00

    Rafael, apliquei as formatações que você sugeriu e está tudo ok, agora quero saber como ficaria o código VBA se a macro que criamos fosse executada automaticamente ao abrir a pasta de trabalho.

    Abraços!

    Esta resposta foi útil?

    0 comentários Sem comentários