Estrarre la posta elettronica dalla stringa di testo nel foglio di calcolo Excel / Google


9

Sto cercando di estrarre gli indirizzi e-mail dalle stringhe di testo in Google Docs / Excel e inviarli via e-mail automaticamente, dove il contenuto delle celle è attualmente sconosciuto (fino a quando non viene aggiornato dall'utente).

Ad esempio, potrebbero leggere:

  1. Ciao,

    Il mio amico esempio@esempio.com.

    Grazie,

    Esempio Joe

O

  1. Dovresti chiedere

    example@example.co.uk

Al momento ho questa formula:

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

Funziona per quasi tutti i casi, tranne

a) come nell'esempio 1, dove qualcuno mette un, o. alla fine dell'email

b) come nell'esempio 2, dove l'e-mail inizia su una nuova riga, arriva come ad es.

Chiedi

example@example.com

Come potrei adattare la formula per correggerli?

Risposte:


7

Per i fogli di calcolo di Google

Google Spreadsheets ha queste fantastiche formule regex già integrate

Usiamo il primo per estrarre gli indirizzi di posta. Inserisci questa formula in una cella di Google Spreadsheet:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 è la cella in cui deve risiedere la stringa da controllare (corpo della posta nel tuo caso)
  • La formula completa è composta da 2 parti. La parte interna è la formula regex e la parte esterna è per la prevenzione degli errori
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") ritorna l'indirizzo di posta
  • iferror(innerformula,"")impedisce #N/Aquando la formula regex non è stata in grado di restituire nulla, ad esempio non è stato trovato un indirizzo di posta valido

inserisci qui la descrizione dell'immagine

Come funziona il pattern regex?

[A-Z0-9 ._% + -]. + @ [A-Z0-9 .-] + [az] {2,4}

  • A-zrappresenta qualsiasi carattere tra an Ae a z.
    Nota le lettere maiuscole e minuscole. In questo modo non distingue tra maiuscole e minuscole
  • 0-9 rappresenta qualsiasi cifra
  • ._%+- rappresentano quei segni stessi
  • [ ] rappresenta un singolo carattere consentito tra parentesi
  • Mettere un +segno dietro [ ]consente di ripetere all'infinito il modello precedente
  • @non ha un significato speciale. Cerca letteralmente un @segno
  • [A-z0-9.-]+è lo stesso di cui sopra. Ma _%+non sono ammessi dietro un @cartello questa volta
  • \.cerca un singolo punto. Deve essere evitato con un precedente \perché .normalmente è un segnaposto qualsiasi personaggio
  • Alla fine [A-z]{2,4}cerca 2,3 o 4 caratteri senza distinzione tra maiuscole e minuscole

Risorse usate


Grazie per la tua utile risposta. Un pensiero che ho avuto è che {2, 4}potrebbe essere limitante perché molti TLD in arrivo come .codessuperano i 4 caratteri.
Alex Booker,

1

Questo è per Excel.

Considera la seguente funzione definita dall'utente (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

Le funzioni definite dall'utente (UDF) sono molto facili da installare e utilizzare:

  1. ALT-F11 visualizza la finestra VBE
  2. ALT-I ALT-M apre un nuovo modulo
  3. incollare il materiale e chiudere la finestra VBE

Se si salva la cartella di lavoro, l'UDF verrà salvato con essa. Se si utilizza una versione di Excel successiva al 2003, è necessario salvare il file come .xlsm anziché .xlsx

Per rimuovere l'UDF:

  1. visualizza la finestra VBE come sopra
  2. cancella il codice
  3. chiudere la finestra VBE

Per utilizzare l'UDF da Excel:

=GetEmailAddy(A1)

Per ulteriori informazioni sulle macro in generale, vedere:

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

e

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

e per le specifiche sugli UDF, vedere:

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

Le macro devono essere abilitate affinché funzioni!

Ecco alcuni esempi:

inserisci qui la descrizione dell'immagine

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.