Extraindo e-mail da string de texto no excel / google spreadsheet

8

Estou procurando extrair endereços de e-mail de strings de texto no Google Docs / Excel e enviá-las 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. Hi,

    My friend [email protected].

    Thanks,

    Example Joe

OR

  1. You should ask

    [email protected]

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 um, ou. no final do email

b) como no exemplo 2, onde o e-mail começa em uma nova linha, ele aparece como, por exemplo.

ask

[email protected]

Como posso adaptar a fórmula para corrigir isso?

    
por Tom 28.07.2015 / 13:29

2 respostas

5

Para o Google Spreadsheets

Google Spreadsheets tem essas fórmulas legais de regex já incorporadas

Usamos o primeiro para extrair endereços de e-mail. 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 mail no seu caso) deve residir
  • A fórmula completa consiste em 2 partes. A parte interna é a fórmula de 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 e-mail
  • iferror(innerformula,"") evita #N/A quando a fórmula de expressão regular não pôde retornar nada, por exemplo, não endereço de e-mail válido foi encontrado

Comofuncionaopadrãoregex?

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

  • A-zrepresentaqualquercaractereentreumAeumz.
    Observeasmaiúsculaseminúsculas.Destaforma,nãodiferenciamaiúsculasdeminúsculas
  • 0-9representaqualquerdígito
  • ._%+-representaessessinaisemsi
  • []representaumúnicocaracterequeépermitidodentrodoscolchetes
  • Colocarumsinal+atrásde[]permitequeopadrãoanteriorsejarepetidoinfinitamente
  • @nãotemsignificadoespecial.Eleliteralmenteprocuraporumsinal@
  • [A-z0-9.-]+éomesmoqueacima.Mas_%+nãoépermitidoatrásdeumsinal@destavez
  • \.procuraporumúnicoponto.Temqueserescapadocomum\precedenteporque.normalmenteéummarcadorqualquercaractere
  • Porfim,[A-z]{2,4}procurapor2,3ou4caracteressemdistinçãoentremaiúsculaseminúsculas

Recursosusados

  • link
por 28.07.2015 / 16:42
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

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

  1. ALT-F11 exibe a janela do 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, a UDF será salva com ela. Se você estiver usando uma versão do Excel posterior a 2003, deverá salvar o arquivo como .xlsm em vez de .xlsx

Para remover o UDF:

  1. abrir a janela do 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:

link

e

link

e para detalhes sobre UDFs, consulte:

link

As macros devem estar ativadas para que isso funcione!

Aqui estão alguns exemplos:

    
por 28.07.2015 / 14:14