2016-11-01 2 views
0

Hallo!E-Mails in sehr langen Textzeichenfolgen in Excel finden

Ich habe ein kleines Problem mit einigen wirklich schmutzigen Daten (nett!) In Excel, und ich würde etwas Hilfe lieben.

Ich habe Zellen mit sehr langen Textzeichenfolgen. In ihnen gibt es E-Mail-Adressen. Ich versuche nur die E-Mail-Adressen zu extrahieren. Ich habe versucht, mit der FIND Funktion und substitute alles andere aus meiner Zeichenfolge, aber die Zeichenfolge ist viel zu lang.

Meine zweite Lösung war einfach Text, um die ganze Zeichenfolge Spalte, und dann finden Sie die Zellen mit einem "@" in ihnen und legen Sie sie in einem anderen Blatt. Aus irgendeinem Grund bin ich absolut festgefahren, und jetzt ist mein Gehirn geschmolzen, also hoffe ich, dass einige von euch mir helfen werden!

Derzeit bin ich bei

=COUNTIF(Email!D8:ZZ8,"*@*") 

die mir die Anzahl der @ in einer Vielzahl von Spalten gibt. Ich finde jedoch nicht die Möglichkeit, die E-Mails in meinem zweiten Blatt tatsächlich zu drucken. Ich dachte daran, INDEX oder MATCH zu verwenden, aber ich kann einfach nicht zu dem verdammten Ding kommen.

Kurz gesagt: Ich versuche, den Wert von Zellen, die ein @ enthalten, in einem sehr großen Bereich von Spalten ODER alternativ extrahieren E-Mails in einem sehr großen Textstring. Und mein Gehirn ist geschmolzen.

Danke!

EDIT: Beispieltext, weil ich gefragt habe, was die Daten wie folgt aussieht:

Es gibt vertrauliche Informationen in ihm, also habe ich es für so etwas geändert, die alle vertraulichen Informationen versteckt, sondern gibt Ihnen eine Idee des Formats:

Inhalte, die automatisch von einer Web- Form erzeugen 1800 Zeichen haben, in ein Excel-Dokument gesendet, obwohl optimierten schlecht, weil Regierungen ziemlich schrecklich am Computer stuff. Inhalt, der hat 1800 Zeichen automatisch aus einem Web-Formular generiert, an ein Excel-Dokument gesendet, obwohl schlecht optimiert, weil Regierungen sind ziemlich schrecklichen Computer Sachen. E-Mail wurde von A HUMAN über AN EMAIL SERVER, eine Website, die ein einige Dinge verschiedener Art ermöglicht gesendet. In Übereinstimmung mit dem Webprotokoll A NUMMER haben wir das Feld FROM dieser E-Mail auf unsere generische Antwortadresse auf [email protected] gesetzt, jedoch hat A HUMAN eine E-Mail-Adresse ([email protected]) zur Verfügung gestellt, die wir im Feld REPLY-TO enthalten. Bitte antworten Sie auf MENSCHEN bei [email protected] Um mehr über eine E-Mail SERVER Besuch zu erfahren eine webadress.com mehr über eine Reihe Besuch Web-Protokoll lernen: eine website.com/ http://anemailserver.emailautomaticallysent.com/wf/open?upn=a0CozdHDIYk-2F-2FE-27BDepiWoypG2sQgscftG6HHFFnds8gumLwFG5a91q5dYWchJq-2FS-2FxPwyA-2BRmi77imC9JC2ukUdYS8sqn0WplhHLgUkBT4OVuD4FxAUMSv1sBHGrqdEvBLARp6Ppqth1SdmKl2k4kG5IXQ73J2qGBxZ2FFgSa5wmQXQ9XyFyUsLSPvy4goLbRzaMIfl3u-2BNA1zx5FC2P6mN0komOQDVcbfPsUv2Qm57Fwc95UAD0E2f7ZsxOBXRKmwKSQjnA9ImBwK3wf3TY8vgTeV4N0jD05Oj4F8IK3JIssog6GVNNZ1-2BvLQnZmlVGa7h0WeuauDrGVDCeFcuFa-2BeXVdzpcwlWii2i

+0

Können Sie einige falsche Daten angeben, um Ihre Bedürfnisse zu verstehen? Ist VBA eine praktikable Lösung? Wenn dies der Fall ist, können Sie alle Sonderzeichen außer @ für ein leeres Leerzeichen ersetzen, zusätzliche Leerzeichen zuschneiden, auf Leerzeichen aufteilen, Ihr gesamtes Array durchlaufen und mit 'If varArray (i) Like" *@*.* "' nach Ihrem suchen Zeichenfolgen, die E-Mails ähneln. – nbayly

+0

Sekunde dieses. Können Sie eine der langen Textzeichenfolgen angeben, auf die Sie verweisen? – bdpolinsky

+0

Ich habe meinen ursprünglichen Beitrag bearbeitet, um die Informationen hinzuzufügen –

Antwort

0

Kopieren Sie die Code unten in einem VBA-Modul Ihrer Arbeitsmappe.

(Wenn Sie nichts über VBA-Module und Makros kennen, siehe http://www.excel-easy.com/vba/examples/run-code-from-a-module.html)

Führen Sie das Extract Makro, wählen Sie die Zelle, die die E-Mails enthält, klicken Sie auf OK und die E-Mails werden in der aktiven Zelle platziert werden und unten.

Die Funktion GetEmails kann auch direkt aus einem Bereich aufgerufen werden (Array-Formel).

Function GetEmails(Text As String) 

    Set Regex = CreateObject("vbscript.regexp") 
    Regex.Pattern = "\w+([-+.']\w+)*@\w+([-.]\w+)*\.\w+([-.]\w+)*" 
    Regex.Global = True 

    Set Matches = Regex.Execute(Text) 

    Dim I As Integer, Count As Integer, Arr() 

    Count = Matches.Count 

    If Count Then 
     ReDim Arr(1 To Count, 1 To 1) 
     For I = 1 To Count 
      Arr(I, 1) = Matches(I - 1) 
     Next 
     GetEmails = Arr 
    Else: GetEmails = xlErrNA 
    End If 

End Function 

Sub Extract() 

    Dim Cell As Range 
    On Error GoTo Err 
    Set Cell = Application.InputBox("Select the cell containing emails.", Type:=8) 
    On Error GoTo 0 
    Dim Arr, P As Range 
    Arr = GetEmails(Cell(1).Value) 
    If TypeName(Arr) <> "Variant()" Then Exit Sub 
    Set P = ActiveCell.Resize(UBound(Arr, 1)) 
    P = Arr 
    P.Select 

Err: 
End Sub 
Verwandte Themen