Zdravím
Pokud to řešit makrem samozřejmě to lze. Jednoduché řešení smazat celý list 2 a nakopírovat co je potřeba.
Třeba takhle:
Private Sub Worksheet_Change(ByVal Target As Range)
On Error Resume Next
Dim x As Integer
Dim y As Integer
If Target.Column <> 1 Then Exit Sub 'kontrola zda změna nastala v 1. sloupci
List2.Cells.ClearContents 'smazat celý list 2
x = List1.Cells(1, 1).End(xlDown).Row 'zjistí počet řádků na listu 1
y = 1
For i = 1 To x
If Cells(i, 1) = "x" Then
Range("A" & i & ":G" & i).Copy 'zkopírovat řádek po sloupec G
List2.Cells(y, 1).PasteSpecial 'vložit na list2
y = y + 1
End If
Next
Cells(1, 1).Select
End Sub
Pokud ovšem bude záznamů hodně bude to pomalé (třeba i několik sekund) pak je třeba to vyřešit jednoznačnou identifikací záznamu (ID) a nekopírovat vše...