Ciao.
Non è necessario rinominare i fogli. Nel codice che ti ho scritto faccio riferimento ad essi tramite l'indice. Quindi il foglio 1 sarà il primo nell'elenco delle linguette che trovi a fondo pagina a prescindere da come si chiama.
Il codice te l'ho commentato appositamente per farti capire cosa fa e, come c'è scritto, la colonna c nel foglio 2 mi serve in fase di elaborazione dell'elenco dei nomi univoci. Una volta che non serve più ne rimuovo tutto il contenuto.
Se il codice non fa nulla è perchè evidentemente non l'hai associato al foglio 1.
Una volta aperto l'editor vba, nel menù sinistro dove trovi l'elenco dei fogli, devi fare doppio click sul foglio le cui modifiche genereranno la scrittura dei dati univoci sul foglio 2. E' quello il foglio in cui dove incollare il codice che ti ho scritto.
Per fare le cose per bene tralascia il codice che ti ho scritto prima e incolla questo:
codice:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(ActiveCell, Range("A:A")) Is Nothing Then
'copio il contenuto della colonna A del foglio 1 nella colonna C del foglio 2
Sheets(1).Range("A:A").Copy Sheets(2).Range("C1")
'ordino le voci copiate in senso decrescente al fine di poter applicare il filtro avanzato
Sheets(2).Range("C:C").Sort Key1:=Sheets(2).Columns("C"), Order1:=xlAscending, Header:=xlGuess, _
OrderCustom:=1, MatchCase:=False, Orientation:=xlTopToBottom, _
DataOption1:=xlSortNormal
'filtro e copio il risultato nella colonna B del foglio 2
Sheets(2).Range("C1", Sheets(2).Range("C65536").End(xlUp)).AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Sheets(2).Range("B1"), Unique:=True
'cancello tutto dalla colonna C
Sheets(2).Range("C:C").Clear
End If
End Sub
L'unica differenza rispetto al precedente è che la macro verrà eseguita solo quando apporterai modifiche nel foglio 1 nella colonna A, evitando quindi inutili elaborazioni quando le modifiche riguardano altre porzioni del foglio.