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
    2014-06-18T17:22:58+00:00

    A melhor forma para preencher automático é transformar o intervalo em tabela. Selecione o intervalo já preenchido, vá na aba INSERIR e no botão TABELA, e confirme o intervalo. Você notará que se digitar valores na linha após a última linha da tabela, ela será automaticamente agregada a tabela e a fórmula será preenchida automaticamente também. Se você tiver problema com a formatação do número da coluna C ficando com formato data para as novas linhas, mude a fórmula de C2 para =VALOR(HOJE()-A2)

    Abraços!

    Esta resposta foi útil?

    0 comentários Sem comentários
  2. Anônima
    2014-06-18T17:06:13+00:00

    Rafael, atalho inserido, ainda quero saber se dá para preencher a coluna C automaticamente após preencher a coluna A e B. Como está, tenho que puxar a alça de preenchimento da célula de cima para inserir os Dias corridos na linha que estou editando.

    Esta resposta foi útil?

    0 comentários Sem comentários
  3. Anônima
    2014-06-18T16:43:32+00:00

    André, para executar a macro através de de uma interface do Excel, seria necessário você salvar a macro no arquivo pessoal de macro (se não souber como habilitar a pasta pessoal de macro, acesse o LINK), para então atribuir a macro através das "Opções do Excel" -> "Barra de Ferramentas de Acesso rápido" ou "Personalizar faixas de opções". Entretanto, é necessário modificar a primeira linha do código, ficando assim:

    Sub Nome_da_macro ()

    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

    Se a rotina deste código é algo exclusivo para uma planilha de trabalho específica, eu recomendo deixar o código num módulo e associá-lo a um botão adicionado pelos controles de formulários. Se sua aba de desenvolvedor não estiver habilitada, habilite pelo caminho "Opções do Excel" -> "Personalizar faixas de opções". Na aba de desenvolvedor, clique em inserir e em botão do grupo "Controle de formulários" e clique sobre sua planilha, que automaticamente aparecerá uma janela para escolher sua macro.

    Espero que assim lhe ajude e qualquer dúvida pergunte.

    Abraços!

    Esta resposta foi útil?

    0 comentários Sem comentários
  4. Anônima
    2014-06-18T15:45:40+00:00

    Rafael, o código está funcionando, quero saber como executá-lo a partir da interface do Excel ou adicionar um botão na Barra de Ferramentas de Acesso Rápido por exemplo.

    Esta resposta foi útil?

    0 comentários Sem comentários