从Excel / Google电子表格中的文本字符串中提取电子邮件


9

我正在寻找从Google Docs / Excel中的文本字符串中提取电子邮件地址并自动通过电子邮件发送电子邮件的方式,当前这些单元格的内容未知(直到用户更新)。

例如,他们可能会读:

  1. 你好

    我的朋友example@example.com。

    谢谢,

    示例乔

要么

  1. 你应该问

    example@example.co.uk

我目前有这个公式:

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

它适用于几乎所有情况,除了

a)如示例1所示,其中有人放置或。在电子邮件末尾

b)如示例2所示,其中电子邮件以新行开头,例如。

example@example.com

我如何调整公式来纠正这些问题?

Answers:


7

对于Google电子表格

Google Spreadsheets具有这些很酷的内置正则表达式公式

我们使用第一个来提取邮件地址。将此公式放在Google Spreadsheet单元格中:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")

在此处输入图片说明

正则表达式模式如何工作?

[A-z0-9 ._%+-] + @ [A-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将随之保存。如果要在2003年以后使用Excel版本,则必须将文件另存为.xlsm而不是.xlsx

删除UDF:

  1. 如上调出VBE窗口
  2. 清除代码
  3. 关闭VBE窗口

要从Excel使用UDF:

=GetEmailAddy(A1)

要总体上了解有关宏的更多信息,请参见:

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

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

有关UDF的详细信息,请参见:

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

必须启用宏才能使其正常工作!

这里有些例子:

在此处输入图片说明

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.