Exel Formeln
Christian
- sonstiges
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
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
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