Clever-Excel-Forum

Normale Version: Email aus Text auslesen
Du siehst gerade eine vereinfachte Darstellung unserer Inhalte. Normale Ansicht mit richtiger Formatierung.
Seiten: 1 2
Hallo Ihr alle!

Hoffe Ihr seid gesund und munter ...

Ich habe eine Liste mit Text in Spalte A in jeweils einer Zelle (A1, A2 usw.)

In den meisten Texten (nicht allen) befinden sich eine (oder mehrere) Email Addressen.

Die meisten Email Addressen befinden sich am Ende des jeweiligen Textes.

Da es sich um internationale Freemail und Business Email Adressen handelt, ist der Aufbau der jeweiligen Email Addresse immer etwas unterschiedlich:

xxx.xxx@gmail.com
xxx@x-xxx.de
xxx@xxx.org
xxx-xxx-xxx@xxx-xxx.com 
usw.

Allen gleich ist natürlich das @ in der Mitte und jeweils ein Leerzeichen vor und hinter der Email Adresse.

Da mich die (soweit mehrere vorhanden) letzte Email im Text am meisten interessiert, könnte man von hinten suchen und (nur) die erste Email die gefunden wird auslesen.

Da es sich um sensible Daten in den Texten handelt, kann ich euch leider keine Originalbeispiele zum Testen zur Verfügung stellen:

Ich habe aber eine neutralisierte Liste angehängt, mit und ohne Email im Text.

Freue mich über eure Vorschläge

Danke und Gruss

Michael
B1: =SVERWEIS("*@*";LET(
x;XMLFILTERN("<a><b>"&WECHSELN(A1;" ";"</b><b>")&"</b></a>";"//b");
y;ZEILEN(x);
INDEX(x;SEQUENZ(y;;y;-1)));1;)


Der XMLFILTERN-Teil wurde von shift-del gefunden.

Das Beispiel mit mehreren EMAILs musste ich mir übrigens selbst einbauen.

EDIT: sigi hat recht, hier für xl2013 (ohne LET und SEQUENZ):

B1: =SVERWEIS("*@*";INDEX(
XMLFILTERN("<a><b>"&WECHSELN(A1;" ";"</b><b>")&"</b></a>";"//b");ZEILEN(
XMLFILTERN("<a><b>"&WECHSELN(A1;" ";"</b><b>")&"</b></a>";"//b"))+1-ZEILE(INDIREKT("1:"&ZEILEN(
XMLFILTERN("<a><b>"&WECHSELN(A1;" ";"</b><b>")&"</b></a>";"//b")))));1;)
Hallo Michael,

ich fürchte deine xl-Versionen 2013/17 kennen diese neuen Funktionen von LCohen, shift-del noch nicht.
Für "altes" Excel kannst du meine VBA-Fkt. hernehmen. (s. Mappe)

Gruß Sigi
Hi!

Wenn ich die Formel =

=SVERWEIS("*@*";LET(x;XMLFILTERN(""&WECHSELN(A1;" ";"")&"";"//b");y;ZEILEN(x);INDEX(x;SEQUENZ(y;;y;-1)));1;)

in B1 der B2 usw.  einfüge steht da nur #NAME?
Habs oben korrigiert für Dein xl2013. 

XMLFILTERN übrigens seit xl2013. Und, etwas teuflisch: xlWeb kennt zwar LET+SEQUENZ, aber nicht XMLFILTERN.
Hi ...

... kommt bei immer noch #NAME?
[attachment=41912]

Es gibt kein Excel 2017. Meinst Du etwa 2007?
Hallo zusammen,
habe mal ein wenig "rumgespielt" und versucht das mit meinem (2019er) Excel zu lösen:
Code:
=WENNFEHLER(TEIL(A1;FINDEN("#";WECHSELN(A1;" ";"#";FINDEN("@";A1)-LÄNGE(WECHSELN(TEIL(A1;1;FINDEN("@";A1));" ";""))))+1;FINDEN(" ";TEIL(A1;FINDEN("#";WECHSELN(A1;" ";"#";FINDEN("@";A1)-LÄNGE(WECHSELN(TEIL(A1;1;FINDEN("@";A1));" ";""))))+1;99)));"")

In der Beispiel-Datei sind die Einzelschritte erkennbar
Gruß Holger

PS

Zitat:ich fürchte deine xl-Versionen 2013/17 kennen diese neuen Funktionen von LCohen, shift-del noch nicht.

Habe ich versucht einzufügen, leider nur NV bzw. Name
Excel 2007

Wenn ich Deine Liste öffne, stehen in Spalte F die Emailadressen (soweit vorhanden).

Wenn ich weitere Texte in Spalte A hinzufüge und die Formel in Spalte F dementsprechend verlängere steht da wieder nur #NAME?

Hallo Holger,

Deine Formel klappt prima

Hallo Siggi,

Deine übrigens auch
Tja, ist halt doof, wenn man noch nicht einmal seine Version richtig hinterlegt. Mit 2013 (die nennst Du auch) sollte es gehen, weil XMLFILTERN dort vorhanden ist. Also hast Du eben mit 2007 wieder falsch geantwortet.

OK, ich habe beim ersten Versuch ja auch nicht aufgepasst.
Seiten: 1 2