Microsoft Excel

Herbers Excel/VBA-Archiv

Mail Adresse extrahieren und zählen

Betrifft: Mail Adresse extrahieren und zählen von: urmila
Geschrieben am: 23.06.2014 16:59:33

Hallo zusammen,

Ich hoffe ihr könnt mir weiter helfen:

In einer (aktiven) Zelle stehen unterschiedlich viele E-Mail Adressen (z.B. vorname.nachname@mail.de)
Nun will ich dass in der selben Zelle alle E-Mail Adressen extrahiert werden und in der Zelle rechts die Anzahl der Namen (gefundene E-Mail Adressen)

also z.B. "vorname.nachname@mail.de" = "Vorname Nachname"...das "@mail.de" soll halt verschwinden und alle anderen Zeichen/Trennzeichen. Die Trennung der Namen dachte ich an einem Komma

Die Zeichen/Trennzeichen: es kann sein dass in der (aktiven)Zelle 1 oder über 20 E-Mail Adressen stehen, diese werden dann durch ein Leerzeichen, einem Semikolon oder Querstrick etc. getrennt, und das meinte ich soll alles verschwinden und die extrahierte Namen sollen durch einem Komma erfolgen.

Ich hoffe es ist verständlich und ihr könnt mir weiterhelfen.

Vielen Dank und LG
Urmila

  

Betrifft: Die Aufgabe ist aber nicht ganz klar, ... von: Luc:-?
Geschrieben am: 24.06.2014 02:21:32

…Urmila,
denn es sieht so aus, als ob du wieder eine reine VBA-Lösung per SubProzedur haben willst. Solche sehr speziellen Pgmm schreibe ich aber nicht gern, sondern lieber etwas Universelleres wie zB eine UDF (benutzerdefinierte Fkt, in VBA geschrieben).
Eine reine FmlLösung (deren Ergebnis könntest du ja auf die QuellZelle als Wert zurückspeichern und dann die Fml löschen) mit xlStandardFktt täte sich hierbei schwer und würde sehr lang wdn. Denn eine Fkt, die eine bestimmte Operation iterativ verwendet, d.h., immer wieder auf das vorhergehende Ergebnis anwendet, hat Xl nicht. Du könntest natürlich mit WECHSELN arbeiten, aber dann müsstest du für alle Zeichenfolgen, die in deinem Text auftreten könnten, erneut WECHSELN, also xmal diese Fkt in der Fml haben. Ansonsten hülfe nur noch eine Lösung auf Basis der xl-eigenen Iteration, aber das ist recht kompliziert und nicht sonderlich stabil. Ich ziehe deshalb eine Fml mit spezieller (aber universeller) UDF vor. Dann könnte eine Fml, die das leistet, was du willst, so aussehen:
B1:=WECHSELN(WECHSELN(MaskOn(WECHSELN(WECHSELN(WECHSELN(A1;";";"#");"/";"#");",";"#");"mrk@#";1);" ";", ");".";" ")
Die Anzahl der notwendigen WECHSELeieN hängt jetzt nur noch davon ab, wieviel verschiedene Trennzeichen zwischen den EinzelAdressen verwendet wurden (+ 2× für Endbehandlung). Die UDF MaskOn findest du hier.
Die Fml für das NamenZählen wäre dann nicht so wild, hierzu so:
C1:=LÄNGE(B1)-LÄNGE(WECHSELN(B1;", ";","))+1
Falls du A1 mit dem Ergebnis von B1 überschreiben willst, kann aus B1→A1 und C1B1 wdn.
Natürlich kannst du die 1.Fml auch gleich um den Text in A1 herumschreiben (bzw das besser per Pgm erledigen lassen), dann geht der OriginalText nicht verloren und kann bei Bedarf (ggf auch per Pgm) reaktiviert wdn.
Geht es dir aber nur um die Anzahl der Namen, kannst du auch die 2× B1 in der 2.Fml jeweils durch die 1.Fml ersetzen.
Viel Erfolg! Morrn, Luc :-?

PS: Habe dir noch eine erweiterte Version1.1 zu deinem vorherigen Post eingestellt!


  

Betrifft: AW: Mail Adresse extrahieren und zählen von: Daniel
Geschrieben am: 24.06.2014 02:46:25

Hi

eventuell hilft hier die Menüfunktion ERSTETZEN mit den entsprechenden Jokern.

"xxx@gmx.de; yyy@1und1.de; zzz@Telekom.Com;"

wird mit Ersetzen von "@*;" durch "," und der Einstellung "nicht gesamten Zellinhalt vergleichen" zu
"xxx, yyy, zzz, "

bei Unterschiedlichen Trennzeichen muss man vielleicht erst nochmal diese Trennzeichen durch ein einheitliches Trennzeichen ersetzen.



Die Anzahl der Mail-Adressen könntest du vor dem Ersetzen mit
=Länge(A1)-Länge(Wechseln(A1;"@";""))

bestimmen, nach dem Erstetzen er @ müsstest du dann das hoffentlich einheitliche Trennzeichen verwenden (wobei du beachten musst, dass man oft ein Trennzeichen weniger als Elemente hat).

Gruß Daniel


 

Beiträge aus den Excel-Beispielen zum Thema "Mail Adresse extrahieren und zählen"