Seus requisitos não são muito claros, como outros pôsteres afirmaram, mas eu adicionei um arquivo de amostra com uma macro que acho que atende às suas necessidades.
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Dim PreviousRowStatus As Range
' The variable KeyCells contains the cells that will
' cause an alert when they are changed.
Set KeyCells = Range("H:H")
Application.EnableEvents = False
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
' Did a change occur to the status column (other than the column header?
If Range(Target.Address).Column = "8" And Range(Target.Address).Row <> 1 _
And Range(Target.Address).Row <> 2 Then ' Column H is column 8
' If the values are already the same, there's no need to make an update.
If Target.Offset(-1, 0).Value <> Target.Value Then
' Update the value of the previous row to match newly entered row
Target.Offset(-1, 0).Value = Target.Value
' Display a message when one of the designated cells has changed.
' MsgBox "Cell " & Target.Offset(-1, 0).Address & " has changed to " & _
Target.Value & " to match data in subsequent row."
End If
End If
End If
Application.EnableEvents = True
End Sub
As cores são definidas automaticamente usando formatação condicional. Se você quiser saber mais sobre como isso funciona, consulte os links abaixo.