Extrahieren mehrerer E-Mail-Adressen aus Excel-Zellen / Excel-Dateien

591
Matt

Gibt es eine Möglichkeit, mehrere E-Mail-Adressen aus einer Excel-Zelle / Excel-Datei zu extrahieren

 | A | B  ----|------------- 1 |HTML | |Content| | 1 | ----|-------|----- 2 |HTML | |Content| | 2 | ----|-------|----- N Rows| | 

Mehr oder weniger ist der Inhalt in Spalten gleich

HTML-Inhalt in der ersten Spalte


cid=9498&peid= **xyz9000@gmail.com** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=  **navee@centra.com**&cid=9498 style="text-decoration: none; color: blue;">Subscribe</a> to receive requirements & resumes </font>  </p> </td> </tr>  <tr> <td colspan="2" valign="middle"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:15px" color="#3C3C3C" face="Verdana" > <br><u>From</u>:<br> Navee ,<br> Centra<br>  qwerty@centra.com<br> <span style="background-color: #FFFF00"><b>Reply to:</b></span> &nbsp;&nbsp;navee@centra.com<br><br>  </font>  </p> </td> </tr>   <tr> <td colspan="2" valign="middle"> <br><p><strong>Big  

HTML-Inhalt in Spalte eins Zeile zwei


cid=9498&peid= **xyz9000@gmail.com** &mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https:///fe_web_member_subscription_verify.php?oeid=  **navee@centra.com**&cid=9498 

Ich habe versucht, Online-Tools zu verwenden, die im Internet verfügbar sind, aber sie sind nicht nützlich / sie extrahieren nur die erste verfügbare E-Mail-Adresse im Excel-Feld.

https://www.extendoffice.com/product/kutools-for-excel/excel-extract-email-address-from-string.html

Es gibt n Zeilen.

Gibt es eine Möglichkeit, mehrere E-Mail-Adressen aus einer Excel-Zelle zu extrahieren

Erforderliche Ausgabe - Extrahieren Sie E-Mails und speichern Sie sie in einem separaten Arbeitsblatt oder in der nebenstehenden Spalte

===========================


Eingabeformat 3

#

Für den folgenden HTML-Code in der Excel-Zelle kann ich nur das erste Vorkommen der E-Mail extrahieren, die ich bekomme, jedoch nicht alle mehrfach genannten E-Mail-Adressen.

 <p align="center" style="margin-left:0px;margin-top:30px; margin-right:0px;margin-bottom:25px;"> <table width="1024" cellspacing="0" cellpadding="0" border="0" > <tr> <td colspan="2" style="border-bottom: solid 1px #ff7373; " valign="bottom"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:12px" color="#3C3C3C" face="Verdana" > <a href=https://house.com/powerhouse/fe_web_member_unsubscription.php?cid=4870&teid=volcan9@gmail.com&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: red;">Remove/unsubscribe</a><font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https://house.com/powerhouse/fe_web_member_update.php?cid=4870&peid=volcan9@gmail.com&mbrid=cf7cc75d395cbf901f73967b1267db42 style="text-decoration: none; color: blue;">Update</a> contact/membership info.<font style="font-size:14px" face="Verdana" color="#000000">&nbsp;&nbsp;|&nbsp;&nbsp;<font style="font-size:12px" face="Verdana" color="#3c3c3c"><a href=https://house.com/powerhouse/fe_web_member_subscription_verify.php?oeid=mod.s@solutionsinc.com&cid=4870 style="text-decoration: none; color: blue;">Subscribe</a> to receive requirements </font>  </p> </td> </tr>  <tr> <td colspan="2" valign="middle"> <p style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:15px" color="#3C3C3C" face="Verdana" > <br><u>From</u>:<br> mod,<br> Solution<br>  mod.s@solutionsinc.com<br> <span style="background-color: #FFFF00"><b>Reply to:</b></span> &nbsp;&nbsp;mod.s@solutionsinc.com<br><br>  </font>  </p> </td> </tr>   <tr > <td width="800" valign="top" style="border-top: solid 1px #333399; "> <p align="justify" style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:12px" color="#666666" face="Verdana"> <a href="http://www.res.com/#!products/c5n6" style="text-decoration: none; color: red" title="Click to view more details">.</a> </font> </p> </td>  <td valign="top" style="border-top: solid 1px #333399; "> <p align="right" style="margin-left:0px;margin-right:0px;margin-top:0px; margin-bottom:0px;">  <font style="font-size:10px" color="#3C3C3C" face="Verdana">  </font> </p> </td> </tr> </table><br> </p> 
0
Ja, dafür gibt es mehrere Möglichkeiten. `kutools` soll für mehrere E-Mail-Adressen funktionieren. Welche anderen Optionen haben Sie ausprobiert und was ist das Problem. Welche der verschiedenen Tags ("unix", "vba", "Google-Spreadsheets", "Excel") möchten Sie verwenden? Welche Art von Ausgabe möchten Sie? Ron Rosenfeld vor 6 Jahren 0
@RonRosenfeld Erforderliche Ausgabe - Extrahieren Sie E-Mails und speichern Sie sie in einem separaten Arbeitsblatt oder in der nebenstehenden Spalte. Ich möchte die Excel-VBA verwenden, oder was auch immer einfacher ist Matt vor 6 Jahren 0

1 Antwort auf die Frage

1
Ron Rosenfeld

Diese User Defined Function (UDF) gibt ein Array der vorhandenen E-Mail-Adressen in der referenzierten Zelle zurück.

Die einzelnen Adressen können dann auf verschiedene Weise abgerufen werden:

  • Verwenden Sie die INDEX-Funktion
  • Geben Sie die Funktion als Array über mehrere Zellen ein
  • Verwenden Sie es in einem Makro, um spezielle Aktionen auszuführen, die Sie möglicherweise benötigen.

Der Charakter einer E-Mail-Adresse wird durch das Regex-Muster bestimmt sPatund im Folgenden detailliert beschrieben.

Sie legen die UDF in einem regulären Modul ab

Option Explicit Function ExtrEmail(S As String) As String() Dim sTemp() As String Dim RE As Object, MC As Object, M As Object Const sPat As String = "\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]\b" 'Regex for emails Dim I As Long  'Initialize Regex engine Set RE = CreateObject("vbscript.regexp") With RE .Pattern = sPat .Global = True .ignorecase = True If .test(S) = True Then Set MC = .Execute(S) ReDim sTemp(1 To MC.Count) I = 0 For Each M In MC I = I + 1 sTemp(I) = M Next M End If End With ExtrEmail = sTemp End Function 

Eine Möglichkeit zur Verwendung ist in der Abbildung unten dargestellt (Verwendung der INDEX-Funktion). Die Formel wird B1rechts unten eingetragen und gefüllt. Die IFERRORKlausel bewirkt, dass eine leere Zeichenfolge zurückgegeben wird, wenn weniger Übereinstimmungen als gefüllte Zellen vorhanden sind.

Bearbeiten: Bild geändert, um alle drei Beispiele anzuzeigen

Regex Pattern Erklärung

E-Mail-Addresse

\b[A-Z0-9._%+-]+@[A-Z0-9.-]+\.[A-Z]\b 

Optionen: Groß- und Kleinschreibung nicht berücksichtigt; ^ $ passen nicht zu Zeilenumbrüchen

Erstellt mit RegexBuddy

@Matt Wenn es für Sie funktioniert, können Sie meine Antwort bitte als akzeptiert markieren? Bitte lesen Sie [Was kann ich tun, wenn jemand meine Frage beantwortet?] (Https://superuser.com/help/someone-answers) Ron Rosenfeld vor 6 Jahren 0
Ich habe Ihre Lösung für das Eingabeformat 3 ausprobiert. Leider funktioniert Ihre Lösung nicht. Es extrahiert nur das erste Vorkommen der E-Mail. Es werden nicht alle in der Zelle vorhandenen mehreren E-Mails extrahiert. Sie sind sich nicht sicher, ob das Problem auf die Eingabedaten zurückzuführen ist oder dass ich sie falsch ausführte - = IFERROR (INDEX (ExtrEmail ($ A1), COLUMNS ($ A: A)), "") Matt vor 6 Jahren 0
@Matt Scheint hier mit den gerade hinzugefügten Input Format 3-Daten zu funktionieren. Ihre Formel erscheint in Ordnung, vorausgesetzt, Ihre Daten sind A1. Ich werde einen Screenshot meiner Ergebnisse mit all Ihren Informationen posten Ron Rosenfeld vor 6 Jahren 0