Pues en principio creía que tenías razón (yo pensaba lo mismo), pero ejecuta esto y verás:
 
Código:
 Private Sub Worksheet_Change(ByVal Target As Range)
'Si ponemos un dato en A1, nos pone el mismo dato en A2
If Target.Row = 1 And Target.Column = 1 Then
    If Range("a1").Value <> "" Then
        Range("a2").Value = Range("a1").Value
    End If
End If
'Si ponemos un dato en A2, nos pone el mismo dato en A1
If Target.Row = 2 And Target.Column = 1 Then
    If Range("a2").Value <> "" Then
        Range("a1").Value = Range("a2").Value
    End If
End If
End Sub
  Funciona, y tiene su lógica, porque la celda que cambia, es solo una, y por tanto solo puede ejecutarse un condicional de los dos que se incluyen en el procedimiento que llama al evento Change.