Excel: Wort zwischen zwei Zeichen auslesen lassen?
Hallo liebe Community,
ich müsste einen Firmennamen aus einer Mailadresse rauslesen und bräuchte hierfür eine entsprechende Formel aus Excel.
z.B. Laura.Müller@siemens.de -> Siemens
Ich habe es mit =TEIL(C15;FINDEN("@";C15)+1;SUCHEN(".";C15)-FINDEN("@";C15)-1) veruscht, aber das klappt nicht, weil die E-Mail Adresse zwei Punkte enthält.
Wäre super, wenn ihr mir helfen könntet.
Vielen Dank!
4 Antworten
So vielleicht
=TEIL(C15;SUCHEN("@";C15)+1;SUCHEN((RECHTS("."));C15)-SUCHEN("@";C15)-1)
Der Weg war gut: Einmal SUCHEN dazu und schon geht es.
=TEIL(I13;FINDEN("@";I13)+1;SUCHEN(".";I13;SUCHEN(".";I13)+1)-FINDEN("@";I13)-1)
Suchen hat ein drittes Argument ab dem du suchst. Du sagst also suche erst ab dem ersten Punkt+1
=TEIL(C15;FINDEN("@";C15)+1;SUCHEN(".";C15;SUCHEN(".";C15)+1)-FINDEN("@";C15)-1)
Ich kann diese Formel als Lösung anbieten, die mit beliebig vielen Punkten in der Adresse umgehen kan:
=TEIL(A1;FINDEN("@";A1)+1;FINDEN(".";A1;LÄNGE(A1)-4)-FINDEN("@";A1)-1)
Den wichtigen, letzten "." suche ich gezielt ab dem vierten Zeichen vor dem Ende der Emailadresse, da die Toplevel Domain meines Wissens nie länger als drei Zeichen ist.
Etwas unsicher bin ich bei englischen Adressen, die häufig mit .co.uk enden. Soll das ".co" mit zum Firmennamen gerechnet werden oder nicht?
Freue mich auf Feedback.
An .Info habe ich nicht gedacht. Good point!
Dann sollte es mit -5 statt -4 aber funktionieren. ".co.UK" wird so komplett abgeschnitten, was ja vielleicht sogar gewünscht ist.
Aubauend auf den anderen Antworten und dem was du selber hast eine flexieble Lösung die auch bei einem oder keinem Punkt Funktioniert:
=WENN(FINDEN("@";C15)<FINDEN(".";C15);TEIL(C15;FINDEN("@";C15)+1;SUCHEN(".";C15)-FINDEN("@";C15)-1);TEIL(C15;FINDEN("@";C15)+1;SUCHEN(".";C15;SUCHEN(".";C15)+1)-FINDEN("@";C15)-1))
Das geht aber nur so lange gut, bis eine Email mit 2 Punkten vor dem @ auftaucht aber da gäbe es auch eine Lösung in VBA die sieht so aus:
Visual Basic Editor öffnen mit ALT + F11 und dann im Menü Einfügen "Modul" wählen und folgenden Code einfügen:
Function FIRMAEMAIL(email)
sResult = Mid(email, InStr(1, email, "@") + 1, Len(email))
sResult = Left(sResult, InStrRev(sResult, "."))
FIRMAEMAIL = sResult
End Function
Danach kannst du die Funktion als Formel verwenden
=FIRMAEMAIL(C15)
Diese Lösung ignoriert alle Punkte vor dem @, es dürfen nur ein Punkt in der Hostadresse stehen.
Screenshot:

Gute Idee:
deine VBA kann aber auch in einer Formel stehen:
=LINKS(TEIL(C15;FINDEN("@";C15)+1;9999);LÄNGE(TEIL(C15;FINDEN("@";C15)+1;9999))-(LÄNGE(TEIL(C15;FINDEN("@";C15)+1;9999))-FINDEN(".";TEIL(C15;FINDEN("@";C15)+1;9999))+1))
Ich auch, aber solange es mit Bordmitteln geht versuche ich es so zu lösen.
Das ist sonst immer so, als würde der Jäger mit ner Atombombe zum Hasenjagen geht.
Für mich sind es Bordmittel aber du hast recht Excel ist Spitze in Formeln und VBA ist eigentlich nur dazu da Sachen zu machen die mit Formel unmöglich sind, quasi alles was man mit Maus und Tastatur und Umgebung hinbekommt.
Ergänzung: Damit gehen alle Adresse auch co.uk und gov.at
Function FIRMAEMAIL(email)
Dim sArray() As String
sResult = Mid(email, InStr(1, email, "@") + 1, Len(email))
sArray = Split(sResult, ".")
sResult = sArray(0)
FIRMAEMAIL = sResult
End Function
Dein Beispiel hinkt, es erwartet jetzt, dass ein Punkt im vorderen Teil der Email sein muss.