Astuce: Les autres langues sont Google-Traduction. Vous pouvez visiter le English version de ce lien.
Se connecter
x
or
x
x
S'ENREGISTRER
x

or

Comment extraire rapidement l'adresse email de la chaîne de texte?

Lorsque vous importez certaines adresses e-mail de la feuille de calcul Site Web vers Excel, il contient toujours du texte non pertinent, mais vous souhaitez maintenant extraire les adresses électroniques pures de la chaîne de texte (voir les captures d'écran ci-dessous). Comment pourriez-vous rapidement obtenir seulement les adresses email du texte de la cellule?

doc-extract-emails1 -2 doc-extract-emails2

Extraire l'adresse e-mail de la chaîne de texte avec Formula

Extraire l'adresse e-mail de la chaîne de texte avec la fonction définie par l'utilisateur

Extraire l'adresse e-mail de la chaîne de texte avec le code VBA

Extraire l'adresse e-mail de la chaîne de texte avec Kutools for Excel


Extraire les adresses e-mail des chaînes de texte:

Kutools for Excel's Extraire l'adresse e-mail peut vous aider à extraire rapidement et facilement les adresses e-mail des chaînes de texte.

doc extrait des courriels-1

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez et essai gratuit maintenant!


flèche bleue droite bulle Extraire l'adresse e-mail de la chaîne de texte avec Formula


Ici, je vous présente une longue formule pour extraire uniquement les adresses e-mail du texte dans Excel. S'il vous plaît faites comme suit:

1. Dans la cellule adjacente B1, entrez cette formule = TRIM (DROIT (SUBSTITUER (GAUCHE (A1, FIND ("", A1 & "", TROUVER ("@", A1)) - "1", "", REPT ("", LEN (A1)), LEN ( A1))).

doc-extract-emails3

2. Puis appuyez Entrer Cliquez sur la clé, puis sélectionnez la cellule B1 et faites glisser la poignée de remplissage vers la plage que vous souhaitez contenir cette formule. Et les adresses e-mail dans la plage ont été extraites de la chaîne de texte. Voir la capture d'écran:

doc-extract-emails4

À noter :

1. La ponctuation après l'adresse e-mail sera également extraite.

2. Si les cellules ne contiennent pas les adresses électroniques, la formule affichera les valeurs d'erreur.

3. S'il existe plusieurs adresses électroniques dans une cellule, la formule extrait uniquement la première adresse.


flèche bleue droite bulle Extraire l'adresse e-mail de la chaîne de texte avec la fonction définie par l'utilisateur

À l'exception de la formule ci-dessus, une fonction définie par l'utilisateur peut également vous aider à obtenir l'adresse électronique à partir de la chaîne de texte.

1. Maintenez le ALT + F11 clés, et il ouvre la Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez la macro suivante dans la fenêtre Module.

Function ExtractEmailFun(extractStr As String) As String
'Update 20130829
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. Ensuite, enregistrez le code et entrez la formule = ExtractEmailFun (A1) dans une cellule vide adjacente, voir capture d'écran:

doc-extract-emails5

4. Et puis appuyez sur Entrer touche, sélectionnez la cellule B1 et faites glisser la poignée de remplissage jusqu'à la plage dont vous avez besoin. Et toutes les adresses e-mail ont été extraites du texte de la cellule. Voir la capture d'écran:

doc-extract-emails6

À noter :

1. Si les cellules n'ont pas les adresses électroniques, elles révéleront des cellules vides.

2. S'il y a plus d'une adresse e-mail dans une cellule, tous les e-mails seront extraits.


flèche bleue droite bulle Extraire l'adresse e-mail de la chaîne de texte avec le code VBA

Si vous pensez que les formules ci-dessus vous posent problème, le code VBA suivant peut vous aider à extraire les adresses e-mail en une seule fois.

1. Maintenez le ALT + F11 clés, et il ouvre une Microsoft Visual Basic pour applications fenêtre.

2. Cliquez insérer > Moduleet collez la macro suivante dans le Fenêtre du module.

VBA: extraire les adresses e-mail de la chaîne de texte

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. Puis appuyez F5 clé pour exécuter ce code, et vous devez sélectionner une plage que vous souhaitez utiliser le VBA dans la boîte de dialogue pop-out, voir capture d'écran:

doc-extract-emails7

4. Puis clique OKet les adresses e-mail ont été extraites des chaînes de texte sélectionnées. Voir les captures d'écran:

doc-extract-emails8 -2 doc-extract-emails9

À noter :

1. Si les cellules n'ont pas les adresses électroniques, elles révéleront des cellules vides.

2. Tous les emails seront extraits s'il y a plus d'une adresse email dans une cellule.

3. Les emails extraits couvriront les données d'origine, donc vous feriez mieux de sauvegarder les données en premier si vous en avez besoin.


flèche bleue droite bulle Extraire l'adresse e-mail de la chaîne de texte avec Kutools for Excel en un clic

Les méthodes ci-dessus semblent un peu compliquées pour notre débutant Excel, ici, je peux vous recommander un outil rapide et facile Kutools for Excel, Avec son Extraire l'adresse e-mail utilitaire, vous pouvez extraire les adresses e-mail à partir des chaînes de texte sans trop d'effort.

Kutools for Excel : avec plus de 300 compléments Excel pratiques, libre d'essayer sans limitation dans 60 jours.

Si vous avez installé Kutools for Excel, s'il vous plaît faites comme suit:

1. Sélectionnez les cellules contiennent les chaînes de texte.

2. Cliquez Kutools > Texte > Extraire l'adresse e-mail, voir capture d'écran:

doc-extract-emails10-10

3. Et un Extraire l'adresse e-mail boîte de dialogue apparaîtra, sélectionnez une cellule où vous voulez mettre le résultat, voir capture d'écran:

doc-extract-emails9

4. Puis clique OK bouton, toutes les adresses e-mail ont été extraites des chaînes de texte, voir capture d'écran:

doc-extract-emails9

Cliquez pour télécharger et essai gratuit Kutools for Excel maintenant!


flèche bleue droite bulle Demo: Extraire l'adresse e-mail de la chaîne de texte avec Kutools for Excel

Kutools for Excel: avec plus que 200 compléments Excel pratiques, libre d'essayer sans limitation dans les jours 60. Téléchargez et essai gratuit maintenant!


Article connexe:

Comment extraire des domaines de plusieurs adresses email dans Excel?


Kutools for Excel résout la plupart de vos problèmes et augmente votre productivité de 80%

  • Réutilisation: Insérer rapidement formules complexes, graphiques et tout ce que vous avez utilisé auparavant; Crypter les cellules avec mot de passe Créer une liste de diffusion et envoyer des emails ...
  • Super Formula Bar (éditez facilement plusieurs lignes de texte et de formule); Disposition de lecture (facilement lire et éditer un grand nombre de cellules); Coller à la gamme filtrée...
  • Fusionner les cellules / rangées / colonnes sans perdre de données; Contenu des cellules divisées; Combiner les lignes / colonnes en double... Prévenir les cellules en double; Comparer les plages...
  • Sélectionnez Dupliquer ou Unique Des rangées; Sélectionnez les lignes vierges (toutes les cellules sont vides); Super Find et Fuzzy Find dans de nombreux cahiers d'exercices; Sélection aléatoire ...
  • Copie exacte Plusieurs cellules sans changer la référence de la formule; Créer automatiquement des références à plusieurs feuilles; Insérer des balles, Cases à cocher et plus ...
  • Extrait du texte, Ajouter du texte, Supprimer par position, Supprimer l'espace; Créer et imprimer des sous-totaux de pagination; Conversion entre contenu de cellules et commentaires...
  • Super filtre (enregistrer et appliquer des schémas de filtrage à d'autres feuilles); Tri avancé par mois / semaine / jour, fréquence et plus; Filtre spécial en gras, en italique ...
  • Combinaison de classeurs et de feuilles de calcul; Fusionner les tables en fonction des colonnes clés; Fractionner les données en plusieurs feuilles; Conversion par lots xls, xlsx et PDF...
  • Plus que de puissantes fonctionnalités 300. Prend en charge Office / Excel 2007-2019 et 365. Prend en charge toutes les langues. Déploiement facile dans votre entreprise ou organisation. Fonctionnalités complètes Essai gratuit du jour 30.
kte tab 201905

Office Tab apporte une interface à onglets à Office et simplifie grandement votre travail

  • Activer l'édition par onglets et la lecture dans Word, Excel, PowerPoint, Publisher, Access, Visio et Project.
  • Ouvrez et créez plusieurs documents dans de nouveaux onglets de la même fenêtre, plutôt que dans de nouvelles fenêtres.
  • Augmente votre productivité de 50% et réduit le nombre de clics de souris pour vous chaque jour!
fond officetab
Say something here...
symbols left.
You are guest ( Sign Up? )
or post as a guest, but your post won't be published automatically.
Loading comment... The comment will be refreshed after 00:00.
  • To post as a guest, your comment is unpublished.
    Vivia Santos · 6 months ago
    Quando extraído mais que um email usando a macro, como separa-los depois usando uma outra célula ? Ou é possível extrair já separando ?
  • To post as a guest, your comment is unpublished.
    Jim Butler · 8 months ago
    Saved me hours of manual parsing. Thank you!
  • To post as a guest, your comment is unpublished.
    Ultraswift Network · 1 years ago
    Thank you!
  • To post as a guest, your comment is unpublished.
    Cedric · 1 years ago
    Hi. This is a great job! I am sure that hundreds of people learned new stuff because of it. But if you just want to extract email addresses, you can use extractemailaddress.com . It seemed simple and quick, and I hav pasted the result in my excel spreadsheet. great!
  • To post as a guest, your comment is unpublished.
    mohit som · 1 years ago
    12 xyz john_hayden@microsoft.com 34abcd

    abcd 1234 abcd xyz john_hayden@microsoft.com

    how to find the mail id in this string.....
  • To post as a guest, your comment is unpublished.
    Ricardo Barreto · 2 years ago
    Great Add ON! Congratulations! :)
  • To post as a guest, your comment is unpublished.
    Liviu · 2 years ago
    Hello, great job! Very useful.
  • To post as a guest, your comment is unpublished.
    Helen · 2 years ago
    I'm not sure if my comment went through, so I'm sending it again.

    Can I use the above VB script to extract domain names only? I don't need the email addresses.

    Thanks
    • To post as a guest, your comment is unpublished.
      Louie Clay · 2 years ago
      [quote name="Helen"]I'm not sure if my comment went through, so I'm sending it again.

      Can I use the above VB script to extract domain names only? I don't need the email addresses.

      Thanks[/quote]

      This works to extract the domain name only for the first email address in a cell (here arbitrarily cell A1)

      =MID(A1,FIND("@",A1)+1,FIND(" ",RIGHT(A1,LEN(A1)-FIND("@",A1)),1))
  • To post as a guest, your comment is unpublished.
    Helen · 2 years ago
    This VB script is awesome. Can it be modified to extract only the domain.names?
  • To post as a guest, your comment is unpublished.
    Helen · 2 years ago
    This formula is fabulous; however, I need to extract the domain names only, not the entire email address. I'm not a VB expert and couldn't find out a way to modify to extract out only the domain name. Can someone assist with this?

    Thanks
  • To post as a guest, your comment is unpublished.
    Sheryl Moss · 2 years ago
    I'm using Excel 2007on a HP. If you have Melanie Brown in A1 and wish for it to read Melanie.Brown@gmail.com in the same cell, how do you accomplish this? I have a string of manes to do the same way. Will some one help me with this?
  • To post as a guest, your comment is unpublished.
    Raul · 3 years ago
    Awsome info`s! Thanks
  • To post as a guest, your comment is unpublished.
    Manuel · 3 years ago
    Extremely helpful. Thanks a lot!!
  • To post as a guest, your comment is unpublished.
    Louie Clay · 3 years ago
    If I want to extract only one email address from A1, this formula does so and reports only a blank, not an error, if A1 contains no email address. I find this an easier solution than trying to master all these scripts, and it costs nothing.

    =IFERROR(TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND(" ",A1&" ",FIND("@",A1))-1)," ",REPT(" ",LEN(A1))),LEN(A1))),"")
  • To post as a guest, your comment is unpublished.
    Navjot SINGH · 3 years ago
    Excellent, wonderfull. every one should must use..
  • To post as a guest, your comment is unpublished.
    Mark · 3 years ago
    since the formula has been a great help to me, I thought I'd share my experience. I run it against a list of html webscrapes which are sometimes so long that the formula errors out.

    According to wikipedia the maximum length of an email address is 254 characters so replacing the len(A1) portions with 256 improves the stability of the function:

    =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND (" ",A1&" ",FIND("@",A1))-1)," ", REPT(" ",256)),256))
  • To post as a guest, your comment is unpublished.
    anil · 3 years ago
    Dear Sir,
    How can i extract correct email ids from my email list example below

    a.hamilton@tradsingapore.com.sg
    aarabest@emirates.com.net.ae
    admin@countrywide.com.my
  • To post as a guest, your comment is unpublished.
    kelvin · 4 years ago
    i need more information how to extract emails
  • To post as a guest, your comment is unpublished.
    Manish · 4 years ago
    Brother, you are really genius.

    Below formula worked for me and saved manual intervention which used to take hours

    =TRIM(RIGHT(SUBSTITUTE(LEFT(H2,FIND (" ",H2&" ",FIND("@",H2))-1)," ", REPT(" ",LEN(H2))),LEN(H2)))


    God Bless you
  • To post as a guest, your comment is unpublished.
    Kiru · 4 years ago
    This is good! thank you.
  • To post as a guest, your comment is unpublished.
    The Chad · 4 years ago
    Thanks to the author of the original script; I went ahead and added a "; " separator in between multiple e-mail addresses.


    Function 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, 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
    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 Function
  • To post as a guest, your comment is unpublished.
    The Chad · 4 years ago
    Hello all, I also was looking for a way to separate out the e-mail addresses, so I could put it into Outlook. I've added a "; " separator between the e-mail addresses so they don't run on together. Let me know what you think. Thanks to the author of the original for getting this together!


    Function 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, 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
    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 Function
  • To post as a guest, your comment is unpublished.
    loni · 4 years ago
    This is great, but now I have a problem. There is a space instead of a period between all the email addresses (i.e. abcd@aol com), so the formula is not putting the end of all the email addresses (.net, .com, etc.) into the new column. How can I fix this?
  • To post as a guest, your comment is unpublished.
    Ulli · 5 years ago
    Thank you so much, this is very handy!
  • To post as a guest, your comment is unpublished.
    Nikita · 5 years ago
    Amazing! Big regards for VBS script! THX!
  • To post as a guest, your comment is unpublished.
    ME · 5 years ago
    no VBA just formula to be pasted into cell

    Just change the references ( the example below looks at Cell A1)

    =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))
    • To post as a guest, your comment is unpublished.
      Ahsan Hassan · 3 years ago
      [quote name="ME"]no VBA just formula to be pasted into cell

      Just change the references ( the example below looks at Cell A1)

      =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))[/quote]


      Thank you. It worked for me.
    • To post as a guest, your comment is unpublished.
      Denis de Castro BMCP · 5 years ago
      [quote name="ME"]...

      =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))[/quote]

      Thanks "ME", works verbatim in Google spreadsheet!
  • To post as a guest, your comment is unpublished.
    Neal · 5 years ago
    Great code! Really useful. Unfortunately it's concatenating multiple email addresses rather than separating them usefully, for example with a semicolon. How would you add in a separator?
  • To post as a guest, your comment is unpublished.
    Justin · 5 years ago
    Thanks for this formula! You just saved me a ton of work - had to extract 1500 emails from a poorly written Excel sheet for an email marketing list. Once I finally found your formula it was a snap.
  • To post as a guest, your comment is unpublished.
    penn · 5 years ago
    very helpful, thanks!
  • To post as a guest, your comment is unpublished.
    manas · 5 years ago
    LUL USE THIS CODE FOR EMAIL EXTRACT.

    Sub lula()
    Dim d1 As Variant
    cntr = 0
    rowstring = ActiveCell.Offset(0, 0).Value

    d1 = Split(rowstring, " ")


    Do

    '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