Passa ai contenuti principali

Microsoft Excel - Estrarre solo le E-Mail da celle con testo misto

A volte capita che abbiamo un elenco di E-Mail che si trovano in un file di Word, ad esempio e a noi serve urgentemente un file di Excel con queste E-Mail

Come risolvere?

Come nel caso dei buchi in una colonna ci abbiamo impiegato pochi minuti, anche in questo caso ci impiegheremo pochi minuti.



Consideriamo la seguente lista


1 - Premere ALT + F11 Comparirà la scheda Visual Basic Application Editions

Excel - Visual Basic Application Edition

 2 - Inserisci -> Modulo e nella casella di testo copiare ed incollare il seguente testo

Public Function f(ByVal v As Variant) As String
    Dim s() As String
    Dim lng As Long
    f = "Nessuna email"
    s = Split(v, " ")
    For lng = 0 To UBound(s)
        If InStr(s(lng), "@") Then
            f = s(lng)
            Exit For
        End If
    Next
End Function


Excel - VBA con Moudo e codie inserito

3 - Ripremere ALT + F11 (torna ad Excel)

4 - Se le E-Mail si trovano nella colonna A, possiamo scegliere una colonna tipo F, ad esempio e scrivere la seguente stringa:

 F1: =f(A1) (in courier grassetto è la formula da scrivere, uguale compreso) e premere invio

5 - Selezionare e tirare  verso il basso la colonna F per tutta la lunghezza delle E-Mail

Excel - E-Mail Estratte da testo generico - 1


6 - Per eliminare le righe Nessuna email Copiamo la colonna F appena creata, spostiamoci più in la (ad esempio la colonna I) e, cliccando sul pulsante incolla, incolliamo solo i valori (non la formula, co me si vede nella immagine successiva)

Avremo così

Excel - Colonna I con solo i valori incollati delal colonna F


 7 - Per compattare la colonna dobbiamo eliminare i valori duplicati, in questo caso Nessuna email. Nella scheda dati (Excel 2010) c'è il pulsante Rimuovi duplicati. Avremo

 
Excel - Rimuovi Duplicati

 Cliccando su OK rimuove gli n duplicati -1

Excel - Colonna con i duplicati rimossi -1
A questo punto non rimane che eliminare a mano la riga e copiare ed incollare i dati così estratti in un altro foglio di Excel  o di testo.

A margine devo aggiungere che questo metodo può essere usato anche per effettuare una ricerca molto più stretta  rispetto a quella imposta.

Infatti se da una lista di, ad esempio,  1.000 email di vario genere che hanno domini differenti (ad esempio gmail.com, hotmail.com, libero.it, ecc) ovviamente inseriti in modo casuale, vogliamo estrarre dal mucchio solo quelle che hanno per dominio gmail.com, alla riga:

If InStr(s(lng), "@") Then

al posto di @ possiamo inserire 

If InStr(s(lng), "@gmail.com") Then

eseguendo lo stesso procedimento appena descritto, avremo tutte le E-Mail che hanno per dominio quello che abbiamo scelto.



Commenti

MARCO ha detto…
GRAZIE RAGAZZO, MI HAI SALVATO IL FINE SETTIMANA!
Anonimo ha detto…
OTTIMA FUNZIONE GRAZIE. MI SAPETE DIRE SE SULLO STESSO TESTO CI SONO DUE O PIU INDIRIZZI E_MAIL COME POSSO FARE PER ESTRARLI TUTTI?

COSI' PRENDE SOLO IL PRIMO

CIAO
Carmine
vittoria ha detto…
non riesco con excel 2010 ! quand e che compaiono tutte le mail ?e perche la pagina alt F11 non si chiude ?salva anche il mio fine settimana pleeease :)