Note: The other languages of the website are Google-translated. Back to English

Hur extraherar jag snabbt e-postadress från textsträng?

När du importerar några e-postadresser från Webbplats till Excel-kalkylblad innehåller det alltid irrelevant text, men nu vill du bara extrahera de rena e-postadresserna från textsträngen (se följande skärmdumpar). Hur kunde du snabbt bara få e-postadresserna från celltexten?

doc-extract-e-postmeddelanden1 -2 doc-extract-e-postmeddelanden2

Extrahera e-postadress från textsträng med Formel

Extrahera e-postadress från textsträng med användardefinierad funktion

Extrahera e-postadress från textsträng med VBA-kod

Extrahera e-postadress från textsträng med Kutools för Excel


pil blå höger bubbla Extrahera e-postadress från textsträng med Formel

Här introducerar jag dig en lång formel för att endast extrahera e-postadresserna från texten i Excel. Gör så här:

1. Ange den här formeln i den intilliggande cellen B1 = TRIM (HÖGER (SUBSTITUT (VÄNSTER (A1, HITTA ("", A1 & "", HITTA ("@", A1)) - 1), "", REPT ("", LEN (A1))), LEN ( A1))).

doc-extract-e-postmeddelanden3

2. Tryck sedan på ange välj sedan cellen B1 och dra påfyllningshandtaget till det intervall som du vill innehålla denna formel. Och e-postadresserna i intervallet har extraherats från textsträngen. Se skärmdump:

doc-extract-e-postmeddelanden4

Anmärkningar:

1. Tecknet efter e-postadressen extraheras också.

2. Om cellerna inte innehåller e-postadresserna visar formeln felvärden.

3. Om det finns mer än en e-postadress i en cell kommer formeln endast att extrahera den första adressen.


Extrahera flera e-postadresser från textsträngar

Kutools för ExcelÄr Extrahera e-postadress kan hjälpa dig att extrahera e-postadresserna från textsträngarna snabbt och bekvämt. Klicka för att ladda ner Kutools för Excel!

doc extrahera e-postmeddelanden-1

Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!


pil blå höger bubbla Extrahera e-postadress från textsträng med användardefinierad funktion

Förutom ovanstående formel kan en användardefinierad funktion också hjälpa dig att få e-postadressen från textsträngen.

1. Håll ner ALT + F11 knapparna och det öppnar Microsoft Visual Basic för applikationer fönster.

2. Klicka Insert > Modulernaoch klistra in följande makro i modulfönstret.

Function ExtractEmailFun(extractStr As String) As String
'Update by extendoffice
Dim CharList As String
On Error Resume Next
CheckStr = "[A-Za-z0-9._-]"
OutStr = ""
Index = 1
Do While True
    Index1 = VBA.InStr(Index, extractStr, "@")
    getStr = ""
    If Index1 > 0 Then
        For p = Index1 - 1 To 1 Step -1
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = Mid(extractStr, p, 1) & getStr
            Else
                Exit For
            End If
        Next
        getStr = getStr & "@"
        For p = Index1 + 1 To Len(extractStr)
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = getStr & Mid(extractStr, p, 1)
            Else
                Exit For
            End If
        Next
        Index = Index1 + 1
        If OutStr = "" Then
            OutStr = getStr
        Else
            OutStr = OutStr & Chr(10) & getStr
        End If
    Else
        Exit Do
    End If
Loop
ExtractEmailFun = OutStr
End Function

3. Spara sedan koden och ange formeln = ExtractEmailFun (A1) i en intilliggande tom cell, se skärmdump:

doc-extract-e-postmeddelanden5

4. Och tryck sedan på ange välj cellen B1 och dra fyllningshandtaget till det intervall som du behöver formeln. Och alla e-postadresser har extraherats från celltexten. Se skärmdump:

doc-extract-e-postmeddelanden6

Anmärkningar:

1. Om cellerna inte har e-postadresserna kommer det att avslöja tomma celler.

2. Om det finns mer än en e-postadress i en cell extraheras alla e-postmeddelanden.


pil blå höger bubbla Extrahera e-postadress från textsträng med VBA-kod

Om du tycker att ovanstående formler är besvärliga för dig, kan följande VBA-kod hjälpa dig att extrahera e-postadresserna i taget.

1. Håll ner ALT + F11 knapparna, och det öppnas en Microsoft Visual Basic för applikationer fönster.

2. Klicka Insert > Modulernaoch klistra in följande makro i Modulfönster.

VBA: extrahera e-postadresser från textsträng

Sub ExtractEmail()
'Update 20130829
Dim WorkRng As Range
Dim arr As Variant
Dim CharList As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
arr = WorkRng.Value
CheckStr = "[A-Za-z0-9._-]"
For i = 1 To UBound(arr, 1)
    For j = 1 To UBound(arr, 2)
        extractStr = arr(i, j)
        outStr = ""
        Index = 1
        Do While True
            Index1 = VBA.InStr(Index, extractStr, "@")
            getStr = ""
            If Index1 > 0 Then
                For p = Index1 - 1 To 1 Step -1
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = Mid(extractStr, p, 1) & getStr
                    Else
                        Exit For
                    End If
                Next
                getStr = getStr & "@"
                For p = Index1 + 1 To Len(extractStr)
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = getStr & Mid(extractStr, p, 1)
                    Else
                        Exit For
                    End If
                Next
                Index = Index1 + 1
                If outStr = "" Then
                    outStr = getStr
                Else
                    outStr = outStr & Chr(10) & getStr
                End If
            Else
                Exit Do
            End If
        Loop
        arr(i, j) = outStr
    Next
Next
WorkRng.Value = arr
End Sub

3. Tryck sedan på F5 nyckel för att köra den här koden, och du bör välja ett intervall som du vill använda VBA i dialogrutan poppade ut, se skärmdump:

doc-extract-e-postmeddelanden7

4. Klicka sedan OK, och e-postadresserna har extraherats från de valda textsträngarna. Se skärmdumpar:

doc-extract-e-postmeddelanden8 -2 doc-extract-e-postmeddelanden9

Anmärkningar:

1. Om cellerna inte har e-postadresserna kommer det att avslöja tomma celler.

2. Alla e-postmeddelanden extraheras om det finns mer än en e-postadress i en cell.

3. De extraherade e-postmeddelandena täcker originaldata, så det är bättre att säkerhetskopiera data först om du behöver.


pil blå höger bubbla Extrahera e-postadress från textsträng med Kutools för Excel med ett klick

Ovanstående metoder ser lite komplicerade ut för vår nybörjare i Excel, här kan jag rekommendera dig ett snabbt och enkelt verktyg- Kutools för Excel, med dess Extrahera e-postadress verktyg kan du extrahera e-postadresserna från textsträngarna utan mycket ansträngning.

Kutools för Excel : med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar.

Om du har installerat Kutools för Excel, gör så här:

1. Markera cellerna som innehåller textsträngarna.

2. Klicka Kutools > text > Extrahera e-postadress, se skärmdump:

3. Och en Extrahera e-postadress dialogrutan dyker upp, välj en cell där du vill placera resultatet, se skärmdump:

doc-extract-e-postmeddelanden9

4. Klicka sedan OK knappen, alla e-postadresser har extraherats från textsträngarna, se skärmdump:

doc-extract-e-postmeddelanden9

Klicka för att ladda ner och prova gratis Kutools för Excel nu!


pil blå höger bubbla Demo: Extrahera e-postadress från textsträng med Kutools för Excel

Kutools för Excel: med mer än 300 praktiska Excel-tillägg, gratis att prova utan begränsning på 30 dagar. Ladda ner och testa gratis nu!

Relaterad artikel:

Hur extraherar jag domäner från flera e-postadresser i Excel?


De bästa Office-produktivitetsverktygen

Kutools för Excel löser de flesta av dina problem och ökar din produktivitet med 80%

  • återanvändning: Sätt snabbt i komplexa formler, diagram och allt som du har använt tidigare; Kryptera celler med lösenord; Skapa e-postlista och skicka e-post ...
  • Super Formula Bar (enkelt redigera flera rader med text och formel); Läslayout (enkelt läsa och redigera ett stort antal celler); Klistra in i filtrerat intervall...
  • Sammanfoga celler / rader / kolumner utan att förlora data; Delat cellinnehåll; Kombinera duplicerade rader / kolumner... Förhindra duplicerade celler; Jämför intervall...
  • Välj Duplicera eller Unikt Rader; Välj tomma rader (alla celler är tomma); Super Find och Fuzzy Find i många arbetsböcker; Slumpmässigt val ...
  • Exakt kopia Flera celler utan att ändra formelreferens; Skapa referenser automatiskt till flera ark; Sätt in kulor, Kryssrutor och mer ...
  • Extrahera text, Lägg till text, ta bort efter position, Ta bort mellanslag; Skapa och skriva ut personsökningstalsatser; Konvertera mellan celler innehåll och kommentarer...
  • Superfilter (spara och tillämpa filterscheman på andra ark); Avancerad sortering efter månad / vecka / dag, frekvens och mer; Specialfilter av fet, kursiv ...
  • Kombinera arbetsböcker och arbetsblad; Sammanfoga tabeller baserat på nyckelkolumner; Dela data i flera ark; Batchkonvertera xls, xlsx och PDF...
  • Mer än 300 kraftfulla funktioner. Stöder Office / Excel 2007-2021 och 365. Stöder alla språk. Enkel implementering i ditt företag eller organisation. Fullständiga funktioner 30 dagars gratis provperiod. 60 dagars pengarna tillbaka-garanti.
kte-flik 201905

Fliken Office ger ett flikgränssnitt till Office och gör ditt arbete mycket enklare

  • Aktivera flikredigering och läsning i Word, Excel, PowerPoint, Publisher, Access, Visio och Project.
  • Öppna och skapa flera dokument i nya flikar i samma fönster, snarare än i nya fönster.
  • Ökar din produktivitet med 50 % och minskar hundratals musklick för dig varje dag!
officetab botten
Sortera kommentarer efter
Kommentarer (40)
Inga betyg än. Bli först med att betygsätta!
Denna kommentar minimerades av moderatoren på webbplatsen
LUL ANVÄND DENNA KOD FÖR E-POSTATRAKT. Sub lula() Dim d1 As Variant cntr = 0 rowstring = ActiveCell.Offset(0, 0).Värde d1 = Split(rowstring, " ") Gör 'MsgBox d1(cntr) cntr = cntr + 1 If d1(cntr) = "" Then GoTo ttt If InStr(d1(cntr), "@") Then MsgBox d1(cntr) GoTo ttt End If Loop While d1(cntr) "" ttt: End Sub
Denna kommentar minimerades av moderatoren på webbplatsen
mycket hjälpsam, tack!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack för denna formel! Du har precis sparat mig massor av arbete - var tvungen att extrahera 1500 e-postmeddelanden från ett dåligt skrivet Excel-ark för en e-postmarknadsföringslista. När jag äntligen hittade din formel gick det snabbt.
Denna kommentar minimerades av moderatoren på webbplatsen
Bra kod! Verkligen användbart. Tyvärr sammanfogar det flera e-postadresser istället för att separera dem på ett användbart sätt, till exempel med semikolon. Hur skulle du lägga till en separator?
Denna kommentar minimerades av moderatoren på webbplatsen
ingen VBA bara formel som ska klistras in i cell Ändra bara referenserna (exemplet nedan ser på cell A1) =TRIM(HÖGER(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT( " ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1) )
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]... =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))Av mig[/quote] Tack "JAG", fungerar ordagrant i Googles kalkylark!
Denna kommentar minimerades av moderatoren på webbplatsen
[quote]ingen VBA bara formel som ska klistras in i cellen Ändra bara referenserna (exemplet nedan ser på cell A1) =TRIM(HÖGER(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," " ,REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-SITTA("@" ,A1))Av mig[/quote] Tack. Det fungerade för mig.
Denna kommentar minimerades av moderatoren på webbplatsen
Fantastisk! Stora hälsningar för VBS-manus! TACK!
Denna kommentar minimerades av moderatoren på webbplatsen
Tack så mycket, det här är väldigt praktiskt!
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är bra, men nu har jag ett problem. Det finns ett mellanslag i stället för en punkt mellan alla e-postadresser (dvs. abcd@aol com), så formeln lägger inte slutet på alla e-postadresser (.net, .com, etc.) i den nya kolumnen. Hur kan jag fixa detta?
Denna kommentar minimerades av moderatoren på webbplatsen
Hej alla, jag letade också efter ett sätt att separera e-postadresserna så att jag kunde lägga in det i Outlook. Jag har lagt till en "; "-avgränsare mellan e-postadresserna så att de inte körs på tillsammans. Låt mig veta vad du tycker. Tack till författaren till originalet för att du fick ihop detta! Funktion ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA. InStr(Index, extraherStr, "@") getStr = "" Om Index1 > 0 Då För p = Index1 - 1 Till 1 Steg -1 Om Mid(extractStr, p, 1) Som CheckStr Då getStr = Mid(extractStr, p, 1) & getStr Else Exit For End If Next getStr = getStr & "@" For p = Index1 + 1 To Len(extractStr) If Mid(extractStr, p, 1) Like CheckStr Then getStr = getStr & Mid(extractStr, p, 1) Else getStr = getStr Exit For End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If Loop End-funktion
Denna kommentar minimerades av moderatoren på webbplatsen
Tack till författaren till originalmanuset; Jag gick vidare och la till en "; "-avgränsare mellan flera e-postadresser. Funktion ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA. InStr(Index, extraherStr, "@") getStr = "" Om Index1 > 0 Då För p = Index1 - 1 Till 1 Steg -1 Om Mid(extractStr, p, 1) Som CheckStr Då getStr = Mid(extractStr, p, 1) & getStr Else Exit For End If Next getStr = getStr & "@" For p = Index1 + 1 To Len(extractStr) If Mid(extractStr, p, 1) Like CheckStr Then getStr = getStr & Mid(extractStr, p, 1) Else getStr = getStr Exit For End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If Loop End-funktion
Denna kommentar minimerades av moderatoren på webbplatsen
Det här är bra! tack.
Denna kommentar minimerades av moderatoren på webbplatsen
Broder, du är verkligen ett geni. Nedanstående formel fungerade för mig och sparade manuell intervention som brukade ta timmar =TRIM(RIGHT(SUBSTITUTE(LEFT(H2,FIND (" ",H2&" ",FIND("@",H2))-1)," ", REPT(" ",LEN(H2))),LEN(H2))) Gud välsigne dig
Denna kommentar minimerades av moderatoren på webbplatsen
Jag behöver mer information om hur man extraherar e-postmeddelanden
Denna kommentar minimerades av moderatoren på webbplatsen
Dear Sir, Hur kan jag extrahera korrekta e-post-ID från min e-postlista exempel nedan a.hamilton@tradsingapore.com.sg aarabest@emirates.com.net.ae admin@countrywide.com.my
Denna kommentar minimerades av moderatoren på webbplatsen
eftersom formeln har varit till stor hjälp för mig tänkte jag dela med mig av min erfarenhet. Jag kör det mot en lista med html-webskrapor som ibland är så långa att formeln misslyckas. Enligt wikipedia är den maximala längden på en e-postadress 254 tecken, så att ersätta len(A1)-delarna med 256 förbättrar funktionens stabilitet: =TRIM(HÖGER(SUBSTITUTE(LEFT(A1,FIND (",A1&" ", HITTA("@",A1))-1)," ", REPT(" ",256)),256))
Denna kommentar minimerades av moderatoren på webbplatsen
Utmärkt, underbart. alla borde använda..
Denna kommentar minimerades av moderatoren på webbplatsen
Om jag bara vill extrahera en e-postadress från A1, gör den här formeln det och rapporterar endast en tom, inte ett fel, om A1 inte innehåller någon e-postadress. Jag tycker att detta är en enklare lösning än att försöka bemästra alla dessa skript, och det kostar ingenting. =FELFEL(TRIMMA(HÖGER(ERSÄTTA(VÄNSTER(A1,SITTA(" ",A1&" ",HITTA("@",A1))-1)," ",REPT(" ",LEN(A1))), LEN(A1))),"")
Denna kommentar minimerades av moderatoren på webbplatsen
Extremt hjälpsam. Tack så mycket!!
Denna kommentar minimerades av moderatoren på webbplatsen
Jättebra info! Tack
Denna kommentar minimerades av moderatoren på webbplatsen
Jag använder Excel 2007 på en HP. Om du har Melanie Brown i A1 och vill att den ska läsa Melanie.Brown@gmail.com i samma cell, hur gör du då? Jag har en rad manar att göra på samma sätt. Kan någon hjälpa mig med detta?
Det finns inga kommentarer här ännu
Ladda fler
Lämna dina kommentarer
Postar som gäst
×
Betygsätt detta inlägg:
0   Tecken
Föreslagna platser

Följ oss

Copyright © 2009 - www.extendoffice.com. | Alla rättigheter förbehållna. Drivs av ExtendOffice. | | Sitemap
Microsoft och Office-logotypen är varumärken eller registrerade varumärken som tillhör Microsoft Corporation i USA och / eller andra länder.
Skyddad av Sectigo SSL