Извлечение электронной почты из текстовой строки в таблицу 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когда формула регулярного выражения не может ничего вернуть, например, не найден действительный почтовый адрес

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

Как работает шаблон регулярных выражений?

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

  • A-zпредставляет любой символ между 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

а подробности о UDF смотрите в:

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

Макросы должны быть включены, чтобы это работало!

Вот некоторые примеры:

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.