Jörg Lorenz: Exel Formeln

Beitrag lesen

Hi Chrischan,

Ich möchte nun, dass Exel mir alle E-Mail-Adressen die ein "@gmx." beinhalten in EIN EIZELNES neues Feld setzt und zwischen jedem Eintrag ein Komma setzt, sodass das ganze letztendlich so aussieht:

email@gmx.de, email@gmx.net, email@gmx.de, ... usw.

wenn Du Dich etwas mit VBA auskennst, kannst Du diesen Code verwenden, den Du natürlich anpassen musst:

'Die Routine sucht in einer Spalte nach Bestandteilen von Mailadressen und
'fasst die gefundenen Adressen in einem String zusammen.

Sub AdressenZUsammenFassen()
Dim strSuchstring As String, strTrenner As String
Dim strAdresse As String, strErsteZelle As String
Dim strErgebnisZelle As String
Dim strGesamt As String
Dim intSpalte As Integer
Dim objGefunden As Object
Dim lngI As Long
Dim arrGesamt()

'Hier anpassen: ------------------------------------------------------------------------------
strSuchstring = "@gmx.de"   'Bestandteil, der in den zu suchenden Adressen enthalten sein soll
intSpalte = 1               'Spalte, in der gesucht werden soll
strTrenner = ","            'Zeichen, durch das die gefundenen Adressen getrennt sein sollen
strErgebnisZelle = "B1"     'Zelle, in der das Ergebnis ausgegeben werden soll
'---------------------------------------------------------------------------------------------

lngI = 0
Set objGefunden = ActiveSheet.Columns(intSpalte).Find(strSuchstring, lookat:=xlPart)
If Not objGefunden Is Nothing Then
    lngI = lngI + 1: ReDim Preserve arrGesamt(lngI): arrGesamt(lngI - 1) = Range(objGefunden.Address)
    strErsteZelle = objGefunden.Address(False, False)
    strAdresse = strErsteZelle
Else
    Exit Sub
End If
Do
    Set objGefunden = ActiveSheet.Columns(intSpalte).Find(strSuchstring, after:=Range(strAdresse), lookat:=xlPart)
    strAdresse = objGefunden.Address(False, False)
    If strAdresse = strErsteZelle Then Exit Do
    lngI = lngI + 1: ReDim Preserve arrGesamt(lngI): arrGesamt(lngI - 1) = Range(objGefunden.Address)
Loop
For lngI = 0 To UBound(arrGesamt) - 1
    If lngI < UBound(arrGesamt) - 1 Then strGesamt = strGesamt & arrGesamt(lngI) & strTrenner Else strGesamt = strGesamt & arrGesamt(lngI)
Next
Range(strErgebnisZelle) = strGesamt
End Sub

Ich habe Dir mal eine Beispieldatei hochgeladen: http://www.excel-vba.de/temp/adressensammler.zip

Viele Grüße

Jörg