naja, ich will mal nicht so sein. Die Addressen landen hier in Spalte B. Ich gehe davon aus das keine anderen Daten im Blatt sind. Was man nicht weis, kann man nicht berücksichtigen.
Sub namen()
Dim i As Long, x As Long, cnt As Long
Dim arr
Dim strAdr As String
Dim myAddresses As Object
Set myAddresses = CreateObject("Scripting.Dictionary")
i = 4 'startzeile
'Zellwerte zeilenweise aufteilen
Do While Cells(i, 1) <> ""
arr = Split(Cells(i, 1), ";")
Cells(i, 2).Resize(, UBound(arr) + 1) = arr
i = i + 1
Loop
'adressen umschreiben und in dictionary speichern
For x = 4 To i - 1
For cnt = 2 To UsedRange.SpecialCells(xlCellTypeLastCell).Column
If Cells(x, cnt).Value <> "" Then
strAdr = Replace(Trim(Cells(x, cnt).Value), " ", ".")
strAdr = strAdr & "@xy.com"
If Not myAddresses.Exists(strAdr) Then
myAddresses.Add strAdr, 1
End If
End If
Next cnt
Next x
' alternativ zu nachfolgenden Code myAddresses.Keys für den Mailversand verwenden
'adressen in Tabellenblatt schreiben
Range(Cells(4, 2), Cells(x, cnt)).ClearContents
Cells(4, 2).Resize(myAddresses.Count).Value = Application.Transpose(myAddresses.Keys)
Columns(2).AutoFit
End Sub
|