|  
                                             fehlen denn Addressen oder sind sie unvollständig?  Ich habe den Code etwas komentiert. Was du nicht benötigst z.b. den letzen Teil mit Spalte B, kannst du ja rausnehmen. Die  Referenzen auf Zellen und Spalten  gelten für das aktive Blatt. Willst du die Namen von einem anderen Blatt holen ,dann muß noch das Tabellenblatt davor. 
 'Zellwerte zeilenweise aufteilen
    Do While Cells(i, 1) <> ""
       arr = Split(Cells(i, 1), ";") 'Zellinhalt Spalte A in Array(Datenfeld) schreiben
    'Spalte
       'Zellbereich an Arraygröße anpassen und Array in Tabellenblatt schreiben
       Cells(i, 2).Resize(, UBound(arr) + 1) = arr
      i = i + 1
    Loop
     
    'adressen umschreiben und in dictionary speichern
    'dazu wird der benutzte Datenbereich des Blattes ausgewertet
    For x = 2 To i - 1
     
     'schleife von Spalte 2 bis letzte Spalte des benutzten Bereiches
     For cnt = 2 To UsedRange.SpecialCells(xlCellTypeLastCell).Column
          
          If Cells(x, cnt).Value <> "" Then 'nur gefüllte Zellen bearbeiten
            strAdr = Replace(Trim(Cells(x, cnt).Value), " ", ".") 'Leerzeichen zwischen Namen durch Punkt ersetzen
            strAdr = strAdr & "@xy.com"   'domain an Namen anhängen
            If Not myAddresses.Exists(strAdr) Then
              myAddresses.Add strAdr, 1    'nur nicht vorhandene Adresse in dictionary schreiben
            End If
          End If
     Next cnt
   Next x
   'Zellbereich Leer machen
   Range(Cells(2, 2), Cells(x, cnt)).ClearContents
   'eindeutige Adressen ins Tabellenblatt Spalte B schreiben
   Cells(2, 2).Resize(myAddresses.Count).Value = Application.Transpose(myAddresses.Keys)
   Columns(2).AutoFit 'Spaltenbreite anpassen 
  
     |