Extraction d'e-mails à partir d'une chaîne de texte dans une feuille de calcul Excel / Google


9

Je cherche à extraire les adresses e-mail des chaînes de texte dans Google Docs / Excel et à les envoyer automatiquement, où le contenu des cellules est actuellement inconnu (jusqu'à ce qu'il soit mis à jour par l'utilisateur).

Par exemple, ils pourraient lire:

  1. Salut,

    Mon ami example@example.com.

    Merci,

    Exemple Joe

OU

  1. Tu devrais demander

    exemple@exemple.co.uk

J'ai actuellement cette formule:

=IFERROR((LEFT(CELL,FIND("@",CELL)-1))&"@"&(regexextract(CELL,"@(.*)"))) 

Cela fonctionne pour presque tous les cas, sauf

a) comme dans l'exemple 1, où quelqu'un met un, ou. à la fin de l'e-mail

b) comme dans l'exemple 2, où l'e-mail commence sur une nouvelle ligne, il apparaît par exemple.

demander

exemple@exemple.com

Comment pourrais-je adapter la formule pour les corriger?

Réponses:


7

Pour les feuilles de calcul Google

Google Spreadsheets a ces formules regex fraîches déjà intégrées

Nous utilisons le premier pour extraire les adresses e-mail. Mettez cette formule dans une cellule de feuille de calcul Google:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 est la cellule où doit résider la chaîne à vérifier (corps du courrier dans votre cas)
  • La formule complète se compose de 2 parties. La partie intérieure est la formule d'expression régulière et la partie extérieure est pour la prévention des erreurs
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") renvoie l'adresse e-mail
  • iferror(innerformula,"")empêche #N/Alorsque la formule d'expression régulière n'a pas pu renvoyer quoi que ce soit, par exemple aucune adresse e-mail valide n'a été trouvée

entrez la description de l'image ici

Comment fonctionne le modèle regex?

[A-z0-9 ._% + -] + @ [A-z0-9 .-] +. [Az] {2,4}

  • A-zreprésente n'importe quel caractère entre un Aet un z.
    Notez les majuscules et les minuscules. De cette façon, il est insensible à la casse
  • 0-9 représente n'importe quel chiffre
  • ._%+- représenter ces signes lui-même
  • [ ] représente un seul caractère autorisé à l'intérieur des crochets
  • Mettre un +signe derrière [ ]permet de répéter le motif précédent à l'infini
  • @n'a pas de signification particulière. Il recherche littéralement un @signe
  • [A-z0-9.-]+est le même que ci-dessus. Mais _%+ne sont pas autorisés derrière un @panneau cette fois
  • \.recherche un seul point. Il doit être échappé avec un précédent \car .normalement est un espace réservé n'importe quel caractère
  • [A-z]{2,4}Recherche enfin 2,3 ou 4 caractères insensibles à la casse

Ressources utilisées


Merci pour votre réponse utile. Une pensée que j'avais était que cela {2, 4}pourrait être limitatif car de nombreux TLD à venir, comme .codesplus de 4 caractères.
Alex Booker

1

C'est pour Excel.

Considérez la fonction définie par l'utilisateur (UDF) suivante:

Public Function GetEmailAddy(Sin As String) As String
    Dim s As String
    If InStr(1, Sin, "@") = 0 Then
        GetEmailAddy = ""
        Exit Function
    End If

    s = Replace(Sin, Chr(10), " ")
    s = Replace(s, Chr(13), " ")
    s = Application.WorksheetFunction.Trim(s)
    ary = Split(s, " ")

    For Each a In ary
        If InStr(1, a, "@") > 0 Then
            GetEmailAddy = a
            Exit Function
        End If
    Next a
End Function

Les fonctions définies par l'utilisateur (UDF) sont très faciles à installer et à utiliser:

  1. ALT-F11 ouvre la fenêtre VBE
  2. ALT-I ALT-M ouvre un nouveau module
  3. collez le contenu et fermez la fenêtre VBE

Si vous enregistrez le classeur, l'UDF sera enregistré avec. Si vous utilisez une version d'Excel postérieure à 2003, vous devez enregistrer le fichier sous .xlsm plutôt que .xlsx

Pour supprimer l'UDF:

  1. afficher la fenêtre VBE comme ci-dessus
  2. effacer le code
  3. fermez la fenêtre VBE

Pour utiliser l'UDF à partir d'Excel:

=GetEmailAddy(A1)

Pour en savoir plus sur les macros en général, voir:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

et

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

et pour des détails sur les FDU, voir:

http://www.cpearson.com/excel/WritingFunctionsInVBA.aspx

Les macros doivent être activées pour que cela fonctionne!

Voici quelques exemples:

entrez la description de l'image ici

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.