Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: String ausschneiden

String ausschneiden
29.08.2016 15:32:31
Eckhard
Hallo,
ich möchte eine E-Mailadresse aus Daten in der Spalte A ausschneiden. Sie steht jeweils zwischen dem vorletzen und dem letzten Komma. Danke für Hilfe.
Anzeige

12
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String ausschneiden
29.08.2016 15:56:53
Rudi
Hallo,
=LINKS(TEIL(A1;FINDEN("|";WECHSELN(A1;",";"|";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";""))-1))+1;999); FINDEN("|";WECHSELN(TEIL(A1;FINDEN("|";WECHSELN(A1;",";"|";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";""))-1)) +1;999);",";"|"))-1)
Gruß
Rudi
AW: String ausschneiden
29.08.2016 17:27:01
Eckhard
Hallo Rudi, danke für die rasche Antwort. Wenn ich deine Formel kopiere und Einfüge wird mir die Formel zwar angezeigt, aber die Rechenoperation nicht ausgeführt. Mache ich etwas falsch?
Gruß Eckhard
Anzeige
Das kommt darauf an wie u.wo du die Fml ...
29.08.2016 18:06:02
Luc:-?
…einfügst, ob dein Text in A1 steht und ob die FmlZelle auch als Standard bzw nicht als Text formatiert ist, Eckhard.
Ansonsten nehme ich dein Problem mal zum Anlass, erneut festzustellen, wie mickrig Xl mit textver-/-bearbeitenden Fktt bestückt ist. Mit einer bestimmten UDF wäre die Fml schon mal kürzer, mit 2en noch kürzer und mit einer anderen am kürzesten:
=WECHSELN(WECHSELN(MaskOn(WECHSELN(WECHSELN(A1;",";"´";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";"")));",";"`";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";""))-1);"mrk`´");"`";"");"´";"")
=WECHSELN(WECHSELN(MaskOn(WECHSELN(WECHSELN(A1;",";"´";CountOn(A1;","));",";"`";CountOn(A1;",")-1); "mrk`´");"`";"");"´";"")
=TEIL(LINKS(A1;VLike(A1;"*,*";-1)-1);VLike(LINKS(A1;VLike(A1;"*,*";-1)-1);"*,*";-1)+1;99)
MaskOn (ZweitPosting 2014!) und VLike sind im Archiv per RECHERCHE zu finden.

Gruß, Luc :-?
Besser informiert mit …
Anzeige
Übrigens, ...
30.08.2016 01:16:55
Luc:-?
…Eckhard,
falls du dich lieber für eine UDF entscheiden willst, obwohl rUdis Fml ja prinzipiell fktioniert, empfehle ich eine allgemeine, die auch für andere ähnliche Aufgaben problemlos eingesetzt wdn kann, keine spezielle nach Pgmmierer­Standard(-Tradition, die sich oft schon durch den Namen mit vorgesetztem überfüssigen UN-Kürzel verrät)…
Luc :-?
Anzeige
Da gäbe es zB auch noch folgd Möglichkeiten, ...
30.08.2016 02:00:20
Luc:-?
…Eckhard:
=Splint(A1;",";CountOn(A1;","))
=INDEX(VSplit(A1;",");CountOn(A1;","))
=PickOn(A1;CountOn(A1;",");",")
Alle 4 UDFs sind im Archiv vorhanden!
Morrn, Luc :-?
AW: Da gäbe es zB auch noch folgd Möglichkeiten, ...
30.08.2016 11:45:09
Eckhard
Hallo Luc,
danke!
Eckhard
String auftrennen mit UDF...
29.08.2016 19:49:05
Case
Hallo Eckhard, :-)
vielleicht so? ;-)
 AB
1asdasasd, 234234234, xcyxcyxc, qweqwqwe, 234234234, sdfsafasdf, a@b.de, asdasdasda@b.de
2asdasasd, 234234234, qweqwqwe, 234234234, sdfsafasdf, b@c.de, asdasdasdb@c.de
3qweqwqwe, 234234234, sdfsafasdf, c@d.de, asdasdasdc@d.de
4asdasasd, 234234234, xcyxcyxc, qweqwqwe, asdasdasd, 234234234, sdfsafasdf, d@e.de, asdasdasdd@e.de

ZelleFormel
B1=fncBananenSplit(A1)
B2=fncBananenSplit(A2)
B3=fncBananenSplit(A3)
B4=fncBananenSplit(A4)

Mit folgender Funktion in einem allgemeinen Modul:
Option Explicit
Function fncBananenSplit(strTMP As String) As String
Dim strZ() As String
strZ = Split(strTMP, ",")
fncBananenSplit = Trim(strZ(UBound(strZ) - 1))
End Function
Servus
Case

Anzeige
Reguläre Ausdrücke - RegExp...
30.08.2016 10:07:18
Case
Hallo Eckhard, :-)
um sich nicht nach den Kommata richten zu müssen, könnte man auch mit Regulären Ausdrücken arbeiten - diese sind für solche Stringoperationen prädestiniert: ;-)
 AB
1asdasasd, 234234234, xcyxcyxc, qweqwqwe, 234234234, sdfsafasdf, a@b.de, asdasdasda@b.de
2asdasasd, 234234234, qweqwqwe, 234234234, sdfsafasdf, b@c.de, asdasdasdb@c.de
3qweqwqwe, 234234234, sdfsafasdf, c@d.de, asdasdasdc@d.de
4asdasasd, 234234234, xcyxcyxc, qweqwqwe, asdasdasd, 234234234, sdfsafasdf, d@e.com, asdasdasdd@e.com
5asdasasd, 234234234, xcyxcyxc, qweqwqwe, asdasdasd, 234234234, sdfsafasdf, e@f.de, asdasdasde@f.de

ZelleFormel
B1=fncWerReitetSoSpaetDurchNachtUndWind(A1)
B2=fncWerReitetSoSpaetDurchNachtUndWind(A2)
B3=fncWerReitetSoSpaetDurchNachtUndWind(A3)
B4=fncWerReitetSoSpaetDurchNachtUndWind(A4)
B5=fncWerReitetSoSpaetDurchNachtUndWind(A5)

Auch hier die Funktion in ein allgemeines Modul:
Option Explicit
Function fncWerReitetSoSpaetDurchNachtUndWind(strText As String) As String
Dim objRegExp As Object
Dim objMAtch As Object
On Error GoTo Fin
Set objRegExp = CreateObject("VbScript.Regexp")
With objRegExp
.Global = True
.Pattern = "[a-z0-9\-_]?[a-z0-9.\-_]+[a-z0-9\-_]?@[a-z.-]+\.[a-z]{2,}"
If .Test(strText) Then
Set objMatch = .Execute(strText)
fncWerReitetSoSpaetDurchNachtUndWind = objMAtch(0).Value
Else:
fncWerReitetSoSpaetDurchNachtUndWind = "Bitte Funktion überprüfen!"
End If
End With
Fin:
Set objMAtch = Nothing
Set objRegExp = Nothing
End Function
Das "Pattern" erschlägt sicher nicht alle Mailadressen, aber da wird man im Netz schnell fündig.
Servus
Case

Anzeige
AW: Reguläre Ausdrücke - RegExp...
30.08.2016 11:43:55
Eckhard
Hallo Case,
vielen Dank.
Eckhard
Deine UDF-Gestaltung ist immer noch ...
30.08.2016 13:55:05
Luc:-?
…typisch für Standard-ProfiPgmmierer, Case,
und erinnert eher an Access- als an Xl-Anwendung (in ZellFmln!):
1. „Typenreine“ Deklaration von FktsArgumenten ist in Xl oft eher hinderlich als nützlich;
2. dito Festlegung der UDF auf einen Ergebnis-Datentyp verhindert die Rückgabe spezifischer FehlerWerte (so kann die Xl-Steuerung allerhöchstens den Standard­Fehler #WERT! anbieten);
3. fncBananenSplit lässt vermissen, was schon die intern verwendete vbFkt Split mitbringt, ein 2.Argument für die variable Angabe eines (x-stelligen) TrennZeichens, das beim Original sogar optional ist und einen Default-Wert hat;
4. die Möglichkeit einer AuswahlBestimmung per weiterem Argument könnte hier sinnvoll sein, wäre aber nicht unbedingt erforderlich, da das Ergebnis auch als Argument in INDEX verwendbar wäre (so ist sie aber von vornherein festgelegt!);
5. Reguläre Ausdrücke (RegExp) sind eher etwas für Pgmmierer als für normale Xl-Nutzer, denn deren Formulierung kann ganz schön kompliziert sein (→ welcher NormalNutzer wird sich nebenbei damit befassen wollen?).
Im Übrigen habe ich den Eindruck gewonnen, dass Eckhard mit all dem (meine Anmerkungen eingeschlossen) ohnehin nichts anfangen kann bzw will. Er sollte überprüfen, was er beim Eintrag von Rudis Fml falsch gemacht hat, denn sie fktioniert prinzipiell!
Gruß, Luc :-?
Anzeige
Na ja...
02.09.2016 22:16:14
Case
Hallo Luc, :-)
... meine UDFs sind in der Regel Ergebnis-, Aufgaben- bzw. Lösungsorientiert. Mehr nicht. ;-)
Servus
Case

...Und damit Wegwerf-Ware! Ein Glück für ...
05.09.2016 12:19:23
Luc:-?
…uns, Case,
dass MS (früher) nicht auch so gedacht hat, sonst gäbe es wohl von Anfang an noch viel mehr FktsVarianten als neuerdings nur die paar mit Pkt wie bspw RANG.GLEICH (⇒RANG) und RANG.MITTELW! :-]
Aber schon deine FktsNamen deuten ja auf „Eintagsfliegen“ hin. Für so etwas wäre mir meine Zeit zu schade…!
Luc :-?
Anzeige
;
Anzeige
Anzeige

Infobox / Tutorial

E-Mail-Adressen aus Strings in Excel ausschneiden


Schritt-für-Schritt-Anleitung

Um eine E-Mail-Adresse aus einem String in Excel auszuschneiden, die zwischen dem vorletzten und letzten Komma steht, kannst du die folgende Formel verwenden:

=LINKS(TEIL(A1;FINDEN("|";WECHSELN(A1;",";"|";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";""))-1))+1;999); FINDEN("|";WECHSELN(TEIL(A1;FINDEN("|";WECHSELN(A1;",";"|";LÄNGE(A1)-LÄNGE(WECHSELN(A1;",";""))-1)) +1;999);",";"|"))-1)
  1. Text in Zelle A1 eingeben: Gib die Daten, aus denen du die E-Mail-Adresse extrahieren möchtest, in Zelle A1 ein.
  2. Formel in eine andere Zelle einfügen: Kopiere die oben angegebene Formel in eine andere Zelle (z. B. B1).
  3. Formatierung überprüfen: Stelle sicher, dass die Zelle, in die du die Formel eingefügt hast, nicht als Text formatiert ist. Dies kann dazu führen, dass die Formel nicht korrekt ausgeführt wird.

Häufige Fehler und Lösungen

  • Formel wird als Text angezeigt: Überprüfe, ob die Zelle, in die du die Formel eingefügt hast, als "Standard" formatiert ist und nicht als "Text".
  • Falsche E-Mail-Adresse wird angezeigt: Stelle sicher, dass die E-Mail-Adresse tatsächlich zwischen dem vorletzten und letzten Komma steht. Andernfalls könnte die Formel nicht die erwarteten Ergebnisse liefern.

Alternative Methoden

  1. Verwendung einer benutzerdefinierten Funktion (UDF): Wenn du mit VBA vertraut bist, kannst du eine benutzerdefinierte Funktion wie folgt erstellen:
Option Explicit
Function fncBananenSplit(strTMP As String) As String
    Dim strZ() As String
    strZ = Split(strTMP, ",")
    fncBananenSplit = Trim(strZ(UBound(strZ) - 1))
End Function
  1. Reguläre Ausdrücke: Eine weitere Möglichkeit ist die Verwendung von regulären Ausdrücken, um die E-Mail-Adresse zu extrahieren. Hier ist ein Beispiel für eine Funktion, die dies tun kann:
Option Explicit
Function fncWerReitetSoSpaetDurchNachtUndWind(strText As String) As String
    Dim objRegExp As Object
    Dim objMatch As Object
    On Error GoTo Fin
    Set objRegExp = CreateObject("VbScript.Regexp")
    With objRegExp
        .Global = True
        .Pattern = "[a-z0-9\-_]?[a-z0-9.\-_]+[a-z0-9\-_]?@[a-z.-]+\.[a-z]{2,}"
        If .Test(strText) Then
            Set objMatch = .Execute(strText)
            fncWerReitetSoSpaetDurchNachtUndWind = objMatch(0).Value
        Else
            fncWerReitetSoSpaetDurchNachtUndWind = "Bitte Funktion überprüfen!"
        End If
    End With
Fin:
    Set objMatch = Nothing
    Set objRegExp = Nothing
End Function

Praktische Beispiele

Hier sind einige Beispiele, um die oben genannten Methoden zu veranschaulichen:

Zelle Daten Formel Ergebnis
A1 asdasasd, 234234234, xcyxcyxc, qweqwqwe, a@b.de, asdasdasd =fncBananenSplit(A1) a@b.de
A2 asdasasd, b@c.de, asdasdasd =fncWerReitetSoSpaetDurchNachtUndWind(A2) b@c.de

Tipps für Profis

  • Nutze VBA: Wenn du regelmäßig E-Mail-Adressen aus Strings ausschneiden musst, kann die Erstellung einer benutzerdefinierten Funktion in VBA viel Zeit sparen.
  • Reguläre Ausdrücke: Diese sind mächtig, um komplexe Textmuster zu erkennen, aber sei vorsichtig, da sie auch kompliziert sein können.
  • Fehlersuche: Wenn das Ergebnis nicht wie erwartet ist, überprüfe die Formatierung der Zellen und die Eingabewerte genau.

FAQ: Häufige Fragen

1. Warum funktioniert die Formel nicht?
Es könnte sein, dass die Zelle als Text formatiert ist oder der Text nicht die erwarteten Kommas hat. Überprüfe die Formatierung und den Inhalt der Zelle.

2. Kann ich die Methode auch für andere Strings verwenden?
Ja, die vorgestellten Funktionen sind flexibel und können für verschiedene Arten von Strings verwendet werden, solange du die Trennzeichen entsprechend anpasst.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige