Christian: Exel Formeln

Nabend;

Ist zwar etwas aus der Reihe, aber trotzdem verusche ich hier mal mein Glück, weil ich das wirklich dringend brauch.

Ich habe hier ne kleine Verteilerliste mit E-Mail-Adressen. In jeder Zeile ist 1 Adresse drin.
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.

Wäre supernett, wenn mir einer bei dem Problem weiterhelfen könnte.
Danke schonmal im Vorraus.

Lieben Gruß,
Chrischan

  1. alle E-Mail-Adressen die ein "@gmx." beinhalten

    Die findeste (wenn deine Adresse o.B.d.A. in A1 steht) mit
      SUCHEN("@gmx.",A1)

    Liefert die Stelle des ersten Auftretens bzw. #WERT# zurück.

    Genau das fragste ab und schreibst für alle gmx-Adressen diese mit angehängtem Komma in eine neue Spalte:
      WENN(ISTFEHLER(SUCHEN("@gmx.",A1)),"",A1&", ")

    Das natürlich für alle Zeilen.

    Jetzt musste nur noch die Strings aneinanderreihen. Seien sie o.B.d.A. in B1:B30:
      VERKETTEN(B1,B2,B3,B4,…,B30)

    Dummerweise kann man das nicht als Bereich B1:B30 angeben, und mehr als 30 Argumente sind auch nicht erlaubt. Aber du schriebst ja

    Ich habe hier ne kleine Verteilerliste

    Wenn deine Liste länger als 30 Einträge ist, musste halt
      VERKETTEN(VERKETTEN(B1,…,B30),VERKETTEN(B31,…,B60),…)

    Oder das Ganze doch mit Visual Basic machen.

    Das ", " ganz am Ende sollte dich nicht stören, oder?
    Gunnar

    --
    "Nobody wins unless everybody wins." (Bruce Springsteen)
  2. 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