Extraindo email de uma string de texto na planilha do excel / google


9

Estou procurando extrair endereços de email de cadeias de texto no Google Docs / Excel e enviá-los por e-mail automaticamente, onde o conteúdo das células é desconhecido no momento (até que seja atualizado pelo usuário).

Por exemplo, eles podem ler:

  1. Oi,

    Meu amigo example@example.com.

    Obrigado,

    Exemplo Joe

OU

  1. Você deveria perguntar

    exemplo@exemplo.com.br

Atualmente, tenho esta fórmula:

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

Funciona para quase todos os casos, exceto

a) como no exemplo 1, onde alguém coloca a, ou. no final do email

b) como no exemplo 2, onde o email começa em uma nova linha, ele entra como por exemplo.

perguntar

example@example.com

Como posso adaptar a fórmula para corrigi-las?

Respostas:


7

Para planilhas do Google

As planilhas do Google têm essas excelentes fórmulas regex já incorporadas

Usamos o primeiro para extrair endereços de email. Coloque esta fórmula em uma célula da planilha do Google:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 é a célula onde a string a ser verificada (corpo do correio no seu caso) deve residir
  • A fórmula completa consiste em 2 partes. A parte interna é a fórmula regex e a parte externa é para prevenção de erros
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") retorna o endereço de email
  • iferror(innerformula,"")impede #N/Aquando a fórmula regex não conseguiu retornar nada, por exemplo, nenhum endereço de email válido foi encontrado

insira a descrição da imagem aqui

Como o padrão regex funciona?

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

  • A-zrepresenta qualquer caractere entre an Ae a z.
    Observe as maiúsculas e minúsculas. Dessa forma, não diferencia maiúsculas de minúsculas
  • 0-9 representa qualquer dígito
  • ._%+- representar esses sinais em si
  • [ ] representa um único caractere permitido dentro dos colchetes
  • Colocar um +sinal para trás [ ]permite que o padrão anterior seja repetido infinitamente
  • @não tem significado especial. Ele literalmente procura por um @sinal
  • [A-z0-9.-]+é o mesmo que acima. Mas _%+não são permitidos atrás de um @sinal desta vez
  • \.procura por um único ponto. Ele precisa ser escapado com um precedente, \porque .normalmente é um espaço reservado para qualquer caractere
  • Por fim, [A-z]{2,4}procura 2,3 ou 4 caracteres que não diferenciam maiúsculas de minúsculas

Recursos usados


Obrigado pela sua resposta útil. Um pensamento que eu tinha é que isso {2, 4}poderia ser limitador, porque muitos TLDs futuros como .codesexcedem 4 caracteres.
Alex Booker

1

Isto é para o Excel.

Considere a seguinte Função Definida pelo Usuário (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

As Funções Definidas pelo Usuário (UDFs) são muito fáceis de instalar e usar:

  1. ALT-F11 abre a janela VBE
  2. ALT-I ALT-M abre um novo módulo
  3. cole o material e feche a janela do VBE

Se você salvar a pasta de trabalho, o UDF será salvo com ela. Se você estiver usando uma versão do Excel posterior a 2003, salve o arquivo como .xlsm em vez de .xlsx

Para remover o UDF:

  1. abrir a janela VBE como acima
  2. limpe o código
  3. feche a janela do VBE

Para usar o UDF do Excel:

=GetEmailAddy(A1)

Para saber mais sobre macros em geral, consulte:

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

e

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

e para detalhes sobre UDFs, consulte:

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

As macros devem estar ativadas para que isso funcione!

aqui estão alguns exemplos:

insira a descrição da imagem aqui

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.