
Napadá mě řešení přes událost listu Worksheet_Change a pomocný sloupec, ve kterém budeš uchovávat minulé hodnoty (sloupec můžeš pak klidně skrýt, takže nebude mít vliv na design).
P.
Např. (pro pomocný sloupec "B"):
Private Sub Worksheet_Change(ByVal Target As Range)
Dim i As Byte
Dim radek As Byte
Dim hodnota_bunky As String
For i = 1 To 20
If (Cells(i, 1).Value <> "") And (Cells(i, 2).Value = "") Then
radek = i
hodnota_bunky = Cells(i, 1).Value
Range(Cells(1, 1), Cells(20, 2)).ClearContents
End If
Next i
On Error Resume Next
Cells(radek, 1).Value = hodnota_bunky
Cells(radek, 2).Value = hodnota_bunky
End Sub
syd(9.10.2016 15:39)citovat#033025 
Zkuste:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim rng As Range, s As String
Set rng = ThisWorkbook.Sheets(1).Range("A1:A20")
If Not Intersect(Target, rng) Is Nothing Then
If Target.Rows.Count = 1 Then
s = Target
Application.EnableEvents = 0
rng.ClearContents
Target = s
Application.EnableEvents = 1
End If
End If
End Sub
syd