Extraer correo electrónico de una cadena de texto en Excel / hoja de cálculo de Google

9

Estoy buscando extraer direcciones de correo electrónico de cadenas de texto en Google Docs / Excel y enviarlas por correo electrónico automáticamente, donde el contenido de las celdas se desconoce actualmente (hasta que el usuario lo actualice).

Por ejemplo, podrían leer:

  1. Hola,

    Mi amigo [email protected].

    Gracias,

    Joe ejemplo

O

  1. Deberías preguntar

    [email protected]

Actualmente tengo esta fórmula:

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

Funciona para casi todos los casos, excepto

a) como en el ejemplo 1, donde alguien pone un, o. al final del correo electrónico

b) como en el ejemplo 2, donde el correo electrónico comienza en una nueva línea, aparece como p. ej.

pedir

[email protected]

¿Cómo podría adaptar la fórmula para corregirlos?

Tom
fuente

Respuestas:

7

Para hojas de cálculo de Google

Google Spreadsheets tiene estas geniales fórmulas de expresión regular ya incorporadas

Usamos el primero para extraer direcciones de correo. Pon esta fórmula en una celda de la hoja de cálculo de Google:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 es la celda donde debe residir la cadena a verificar (cuerpo del correo en su caso)
  • La fórmula completa consta de 2 partes. La parte interna es la fórmula regex y la parte externa es para prevenir errores
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") devuelve la dirección de correo
  • iferror(innerformula,"")previene #N/Acuando la fórmula regex no pudo devolver nada, por ejemplo, no se encontró una dirección de correo válida

ingrese la descripción de la imagen aquí

¿Cómo funciona el patrón regex?

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

  • A-zrepresenta cualquier carácter entre an Ay a z.
    Tenga en cuenta las mayúsculas y minúsculas. De esta manera, no distingue entre mayúsculas y minúsculas
  • 0-9 representa cualquier dígito
  • ._%+- representar esos signos en sí
  • [ ] representa un solo carácter que está permitido dentro de los corchetes
  • Poner un +signo detrás [ ]permite que el patrón anterior se repita infinitamente
  • @No tiene un significado especial. Literalmente busca una @señal
  • [A-z0-9.-]+es lo mismo que arriba. Pero _%+esta vez no están permitidos detrás de una @señal
  • \.busca un solo punto. Se debe escapar con un precedente \porque .normalmente es un marcador de posición de cualquier personaje
  • Por fin [A-z]{2,4}busca 2,3 o 4 caracteres que no distinguen entre mayúsculas y minúsculas

Recursos usados

nixda
fuente
Gracias por tu útil respuesta. Un pensamiento que tenía es que {2, 4}podría ser limitante porque muchos TLD futuros como .codesexceden los 4 caracteres.
Alex Booker
1

Esto es para Excel.

Considere la siguiente función definida por el usuario (UDF):

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

Las funciones definidas por el usuario (UDF) son muy fáciles de instalar y usar:

  1. ALT-F11 abre la ventana VBE
  2. ALT-I ALT-M abre un nuevo módulo
  3. pegue las cosas y cierre la ventana VBE

Si guarda el libro, el UDF se guardará con él. Si está utilizando una versión de Excel más tarde que 2003, debe guardar el archivo como .xlsm en lugar de .xlsx

Para eliminar el UDF:

  1. abrir la ventana VBE como se muestra arriba
  2. borrar el código
  3. cierra la ventana de VBE

Para usar el UDF de Excel:

=GetEmailAddy(A1)

Para obtener más información sobre las macros en general, consulte:

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

y

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

y para detalles sobre UDF, ver:

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

¡Las macros deben estar habilitadas para que esto funcione!

Aquí hay unos ejemplos:

ingrese la descripción de la imagen aquí

Estudiante de gary
fuente