Витяг електронної пошти з текстового рядка в таблиці excel / google


9

Я хочу витягнути адреси електронної пошти з текстових рядків у Google Docs / Excel та надсилати їх автоматично автоматично, де вміст комірок наразі невідомий (поки оновлений користувачем).

Наприклад, вони можуть читати:

  1. Привіт,

    Мій друг example@example.com.

    Дякую,

    Приклад Джо

АБО

  1. Ви повинні запитати

    example@example.co.uk

У мене зараз така формула:

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

Він працює майже у всіх випадках, крім

а) як у прикладі 1, де хтось ставить а, або. в кінці електронного листа

б) як у прикладі 2, де електронна пошта починається з нового рядка, вона надходить як, наприклад.

запитати

example@example.com

Як я можу адаптувати формулу для їх виправлення?

Відповіді:


7

Для електронних таблиць Google

Google Spreadsheets має ці круті вже вбудовані формули для регулярних виразів

Ми використовуємо перший для вилучення адрес пошти. Помістіть цю формулу в комірку електронної таблиці Google:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 це клітинка, в якій повинна знаходитися рядок для перевірки (тіло пошти у вашому випадку)
  • Повна формула складається з 2 частин. Внутрішня частина - це формула регулярного виведення, а зовнішня - для запобігання помилкам
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") повертає поштову адресу
  • iferror(innerformula,"")запобігає, #N/Aколи формула regex нічого не змогла повернути, наприклад, не знайдено дійсної поштової адреси

введіть тут опис зображення

Як працює схема регулярного вираження?

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

  • A-zявляє собою будь-який символ між a Aі a z.
    Зверніть увагу на великі і малі регістри. Таким чином, це нечутливе до регістру
  • 0-9 являє собою будь-яку цифру
  • ._%+- представляють самі ці знаки
  • [ ] являє собою єдиний символ, дозволений всередині дужок
  • Поставити +знак позаду [ ]дозволяє повторити попередній зразок нескінченно
  • @не має особливого значення. Він буквально шукає @знак
  • [A-z0-9.-]+те саме, що вище. Але цього разу _%+не пускають за @знак
  • \.шукає одну точку. Її слід уникати з попереднім завданням, \оскільки .зазвичай це заповнення будь-якого символу
  • Під час останнього [A-z]{2,4}пошуку 2,3 або 4 символів, нечутливих до регістру

Використовувані ресурси


Дякую за корисну відповідь. Я вважав, що це {2, 4}може бути обмежуючим, оскільки багато майбутніх TLD, як-от, .codesперевищують 4 символи.
Алекс Букер

1

Це для Excel.

Розглянемо наступну визначену користувачем функцію (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

Функції, визначені користувачем (UDF), дуже прості в установці та використанні:

  1. ALT-F11 відкриває вікно VBE
  2. ALT-I ALT-M відкриває новий модуль
  3. вставити матеріал і закрити вікно VBE

Якщо ви збережете робочу книгу, UDF буде збережено разом з нею. Якщо ви використовуєте версію Excel пізніше 2003 року, ви повинні зберегти файл як .xlsm, а не .xlsx

Щоб видалити UDF:

  1. піднести вікно VBE, як вище
  2. очистити код
  3. закрити вікно VBE

Щоб використовувати UDF від Excel:

=GetEmailAddy(A1)

Щоб дізнатися більше про макроси в цілому, див:

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

і

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

а детальну інформацію про ФДД див.

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

Макроси повинні бути включені, щоб це працювало!

Ось кілька прикладів:

введіть тут опис зображення

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.