Excel - Altera a cor da célula com base em uma data no comentário ou misturada com texto

1

Estou usando o excel 2010 e estou tentando configurar uma regra que alterará a cor de uma célula com base em uma data nessa célula.

Por exemplo, a célula pode conter Site meeting - 11.05.14

Gostaria de poder alterar automaticamente a cor se estiver a 2 semanas, 1 semana fora, 2 dias fora e expirar.

Idealmente, eu não quero ter uma célula separada com apenas a data, então possivelmente a data estaria nos comentários. Eu percebo que estou pedindo muito, mas espero que alguém possa ter uma solução?

Eu tenho uma solução para isso, mas é difícil e não exatamente o que eu estou procurando. Usando formatação condicional e função = NOW eu posso alcançar os resultados, mas usando duas células. Espero que haja uma maneira de dizer ao excel para ignorar tudo em uma célula antes de um determinado símbolo. Neste exemplo "-".

O Googleing me levou ao VBA, que infelizmente não tenho ideia de como usá-lo. Então, esperamos que alguém aqui possa ajudar? Ou pelo menos me dê um empurrão na direção certa.

    
por Jonathan 02.05.2014 / 12:10

1 resposta

0

Isso faz o que você quer

Sub WorkOutTime()

    'see http://dmcritchie.mvps.org/excel/colors.htm for colour chart

dim columnToUse as string
columnToUse = "A"    ' update this to the colum you want to use


Dim expired As Integer
expired = 3 'red

Dim twoDays As Integer
twoDays = 8 'blue

Dim sevenDays As Integer
sevenDays = 27 ' yellow

Dim fourteenDays As Integer
fourteenDays = 7 ' purple


Dim currentCell As Integer
currentCell = 1

Do While (True)

If (Range(columnToUse & currentCell).Value = "") Then
    Exit Do
End If


Dim timeNow As Date
timeNow = Date

Dim willContinue As Boolean
willContinue = True

Dim dateDifference As Integer

dateDifference = dateDiff("d", timeNow, Range(columnToUse & currentCell).Value)

If dateDifference >= 14 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = fourteenDays
    willContinue = False
End If

If dateDifference <= 7 And dateDifference > 2 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = sevenDays
End If

If dateDifference <= 2 And dateDifference >= 0 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = twoDays
End If

If dateDifference < 0 And willContinue Then
    Range(columnToUse & currentCell).Interior.ColorIndex = expired
End If

currentCell = currentCell + 1

Loop

End Sub

Portanto,nabarradeferramentas , clique em Inserir e clique no botão. Arraste a forma para a tela.

Clique em OK

Clique com o botão direito no botão e nomeie-o como WorkOutTime

Se você não obtiver a tela VBa, clique em Visual Basic na faixa de opções

Exclua o que está lá e cole meu código.

Salvar como uma planilha habilitada para macro. Execute-o

Por favor, note que o meu código só funciona para itens da coluna A

    
por 02.05.2014 / 13:05