Note: The other languages of the website are Google-translated. Back to English

如何快速从文本字符串中提取电子邮件地址?

当您从“网站”将一些电子邮件地址导入Excel工作表时,总是包含不相关的文本,但是现在您只想从文本字符串中提取纯电子邮件地址(请参见以下屏幕截图)。 您怎么能快速仅从单元格文本中获取电子邮件地址?

文档提取电子邮件1 -2 文档提取电子邮件2

使用公式从文本字符串中提取电子邮件地址

使用用户定义的功能从文本字符串中提取电子邮件地址

使用VBA代码从文本字符串中提取电子邮件地址

使用Kutools for Excel从文本字符串中提取电子邮件地址


箭头蓝色右气泡 使用公式从文本字符串中提取电子邮件地址

在这里,我向您介绍一个很长的公式,仅从Excel中的文本中提取电子邮件地址。 请执行以下操作:

1。 在相邻的单元格B1中,输入此公式 = TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND(“”,A1&“”,FIND(“ @”,A1))-1),“”,REPT(“”,LEN(A1)))),LEN( A1))).

文档提取电子邮件3

2。 然后按 输入 键,然后选择单元格B1,并将填充手柄拖到要包含此公式的范围。 并且已从文本字符串中提取了该范围内的电子邮件地址。 看截图:

文档提取电子邮件4

笔记:

1.电子邮件地址后的标点符号也将被提取。

2.如果单元格中不包含电子邮件地址,则公式将显示错误值。

3.如果一个单元格中有多个电子邮件地址,则该公式将仅提取第一个地址。


从文本字符串中提取多个电子邮件地址

Kutools for Excel 提取电子邮件地址 可以帮助您快速方便地从文本字符串中提取电子邮件地址。 点击下载Kutools for Excel!

doc提取电子邮件-1

Kutools for Excel:具有300多个方便的Excel加载项,可以在30天内免费试用,没有任何限制。 立即下载并免费试用!


箭头蓝色右气泡 使用用户定义的功能从文本字符串中提取电子邮件地址

除上述公式外,用户定义函数还可以帮助您从文本字符串中获取电子邮件地址。

1。 按住 ALT + F11 键,然后打开 Microsoft Visual Basic应用程序 窗口。

2。 点击 插页 > 模块,然后将以下宏粘贴到“模块”窗口中。

Function ExtractEmailFun(extractStr As String) As String
'Update by extendoffice
Dim CharList As String
On Error Resume Next
CheckStr = "[A-Za-z0-9._-]"
OutStr = ""
Index = 1
Do While True
    Index1 = VBA.InStr(Index, extractStr, "@")
    getStr = ""
    If Index1 > 0 Then
        For p = Index1 - 1 To 1 Step -1
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = Mid(extractStr, p, 1) & getStr
            Else
                Exit For
            End If
        Next
        getStr = getStr & "@"
        For p = Index1 + 1 To Len(extractStr)
            If Mid(extractStr, p, 1) Like CheckStr Then
                getStr = getStr & Mid(extractStr, p, 1)
            Else
                Exit For
            End If
        Next
        Index = Index1 + 1
        If OutStr = "" Then
            OutStr = getStr
        Else
            OutStr = OutStr & Chr(10) & getStr
        End If
    Else
        Exit Do
    End If
Loop
ExtractEmailFun = OutStr
End Function

3。 然后保存代码并输入公式 = ExtractEmailFun(A1) 在相邻的空白单元格中,请参见屏幕截图:

文档提取电子邮件5

4。 然后按 输入 键,选择单元格B1,然后将填充手柄拖到所需公式的范围内。 并且所有电子邮件地址均已从单元格文本中提取。 看截图:

文档提取电子邮件6

笔记:

1.如果单元格没有电子邮件地址,它将显示空白单元格。

2.如果一个单元中有多个电子邮件地址,则将提取所有电子邮件。


箭头蓝色右气泡 使用VBA代码从文本字符串中提取电子邮件地址

如果您认为上述公式对您来说很麻烦,则以下VBA代码可以帮助您将电子邮件地址提取为一个。

1。 按住 ALT + F11 键,它会打开一个 Microsoft Visual Basic应用程序 窗口。

2。 点击 插页 > 模块,然后将以下宏粘贴到 模块窗口.

VBA:从文本字符串中提取电子邮件地址

Sub ExtractEmail()
'Update 20130829
Dim WorkRng As Range
Dim arr As Variant
Dim CharList As String
On Error Resume Next
xTitleId = "KutoolsforExcel"
Set WorkRng = Application.Selection
Set WorkRng = Application.InputBox("Range", xTitleId, WorkRng.Address, Type:=8)
arr = WorkRng.Value
CheckStr = "[A-Za-z0-9._-]"
For i = 1 To UBound(arr, 1)
    For j = 1 To UBound(arr, 2)
        extractStr = arr(i, j)
        outStr = ""
        Index = 1
        Do While True
            Index1 = VBA.InStr(Index, extractStr, "@")
            getStr = ""
            If Index1 > 0 Then
                For p = Index1 - 1 To 1 Step -1
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = Mid(extractStr, p, 1) & getStr
                    Else
                        Exit For
                    End If
                Next
                getStr = getStr & "@"
                For p = Index1 + 1 To Len(extractStr)
                    If Mid(extractStr, p, 1) Like CheckStr Then
                        getStr = getStr & Mid(extractStr, p, 1)
                    Else
                        Exit For
                    End If
                Next
                Index = Index1 + 1
                If outStr = "" Then
                    outStr = getStr
                Else
                    outStr = outStr & Chr(10) & getStr
                End If
            Else
                Exit Do
            End If
        Loop
        arr(i, j) = outStr
    Next
Next
WorkRng.Value = arr
End Sub

3。 然后按 F5 键来运行此代码,您应该在弹出的对话框中选择要使用VBA的范围,请参见屏幕截图:

文档提取电子邮件7

4。 然后点击 OK,并且已从所选文本字符串中提取电子邮件地址。 查看屏幕截图:

文档提取电子邮件8 -2 文档提取电子邮件9

笔记:

1.如果单元格没有电子邮件地址,它将显示空白单元格。

2.如果一个单元中有多个电子邮件地址,则将提取所有电子邮件。

3.提取的电子邮件将覆盖原始数据,因此,如果需要,最好先备份数据。


箭头蓝色右气泡 一键使用Kutools for Excel从文本字符串中提取电子邮件地址

对于我们的Excel初学者来说,上述方法看起来有些复杂,在这里,我可以向您推荐一种快速简便的工具- Kutools for Excel,其 提取电子邮件地址 实用程序,您可以轻松地从文本字符串中提取电子邮件地址。

Kutools for Excel : 带有300多个便捷的Excel加载项,可以在30天内免费试用.

如果你已经安装 Kutools for Excel,请执行以下操作:

1。 选择包含文本字符串的单元格。

2。 点击 库工具 > 文本 > 提取电子邮件地址,请参见屏幕截图:

3。 和 提取电子邮件地址 对话框将弹出,选择要放置结果的单元格,请参见屏幕截图:

文档提取电子邮件9

4。 然后点击 OK 按钮,已从文本字符串中提取所有电子邮件地址,请参见屏幕截图:

文档提取电子邮件9

单击此处立即下载并免费试用Kutools for Excel!


箭头蓝色右气泡 演示:使用Kutools for Excel从文本字符串中提取电子邮件地址

Kutools for Excel:具有300多个方便的Excel加载项,可以在30天内免费试用,没有任何限制。 立即下载并免费试用!

相关文章:

如何从Excel中的多个电子邮件地址中提取域?


最佳办公效率工具

Kutools for Excel解决了您的大多数问题,并使您的生产率提高了80%

  • 重用: 快速插入 复杂的公式,图表 以及您以前使用过的任何东西; 加密单元 带密码 创建邮件列表 并发送电子邮件...
  • 超级公式栏 (轻松编辑多行文本和公式); 阅读版式 (轻松读取和编辑大量单元格); 粘贴到过滤范围...
  • 合并单元格/行/列 不会丢失数据; 拆分单元格内容; 合并重复的行/列...防止细胞重复; 比较范围...
  • 选择重复或唯一 行; 选择空白行 (所有单元格都是空的); 超级查找和模糊查找 在许多工作簿中; 随机选择...
  • 确切的副本 多个单元格,无需更改公式参考; 自动创建参考 到多张纸; 插入项目符号,复选框等...
  • 提取文字,添加文本,按位置删除, 删除空间; 创建和打印分页小计; 在单元格内容和注释之间转换...
  • 超级滤镜 (将过滤方案保存并应用于其他工作表); 高级排序 按月/周/日,频率及更多; 特殊过滤器 用粗体,斜体...
  • 结合工作簿和工作表; 根据关键列合并表; 将数据分割成多个工作表; 批量转换xls,xlsx和PDF...
  • 超过300种强大功能. 支持 Office / Excel 2007-2021 和 365。支持所有语言。 在您的企业或组织中轻松部署。 完整功能 30 天免费试用。 60 天退款保证。
kte选项卡201905

Office选项卡为Office带来了选项卡式界面,使您的工作更加轻松

  • 在Word,Excel,PowerPoint中启用选项卡式编辑和阅读,发布者,Access,Visio和Project。
  • 在同一窗口的新选项卡中而不是在新窗口中打开并创建多个文档。
  • 每天将您的工作效率提高50%,并减少数百次鼠标单击!
officetab底部
按评论排序
注释 (40)
还没有评分。 成为第一位评论!
该评论由网站上的主持人最小化
LUL 将此代码用于电子邮件摘录。 Sub lula() Dim d1 As Variant cntr = 0 rowstring = ActiveCell.Offset(0, 0).Value d1 = Split(rowstring, " ") Do 'MsgBox d1(cntr) cntr = cntr + 1 If d1(cntr) = "" Then GoTo ttt If InStr(d1(cntr), "@") Then MsgBox d1(cntr) GoTo ttt End If Loop While d1(cntr) "" ttt: End Sub
该评论由网站上的主持人最小化
很有帮助,谢谢!
该评论由网站上的主持人最小化
感谢这个公式! 你刚刚为我节省了大量的工作——不得不从一个写得不好的 Excel 表格中提取 1500 封电子邮件,用于电子邮件营销列表。 一旦我终于找到了你的公式,那就太简单了。
该评论由网站上的主持人最小化
很棒的代码! 真的很有用。 不幸的是,它连接了多个电子邮件地址,而不是有用地分隔它们,例如使用分号。 您将如何添加分隔符?
该评论由网站上的主持人最小化
没有 VBA 只需将公式粘贴到单元格中只需更改引用(下面的示例查看单元格 A1) =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT( " ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1) )
该评论由网站上的主持人最小化
[quote]... =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1)," ",REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@",A1))由我[/quote] 感谢“我”,在 Google 电子表格中逐字记录!
该评论由网站上的主持人最小化
[quote]没有VBA只是公式要粘贴到单元格中只需更改引用(下面的示例查看单元格A1)=TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND("@",A1)-1),"" ,REPT(" ",99)),99))&MID(A1,FIND("@",A1),FIND(" ",A1&" ",FIND("@",A1))-FIND("@" ,A1))由我[/quote] 谢谢。 它对我有用。
该评论由网站上的主持人最小化
惊人的! 非常感谢 VBS 脚本! 谢谢!
该评论由网站上的主持人最小化
非常感谢,这个很方便!
该评论由网站上的主持人最小化
这很好,但现在我有一个问题。 所有电子邮件地址(即 abcd@aol com)之间有一个空格而不是句点,因此该公式不会将所有电子邮件地址(.net、.com 等)的末尾放入新列中。 我怎样才能解决这个问题?
该评论由网站上的主持人最小化
大家好,我也在寻找一种方法来分离电子邮件地址,这样我就可以把它放到 Outlook 中。 我在电子邮件地址之间添加了一个“;”分隔符,这样它们就不会一起运行。 让我知道你的想法。 感谢原作者把这个放在一起! Function ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA。 InStr(Index, extractStr, "@") getStr = "" If Index1 > 0 Then For p = Index1 - 1 To 1 Step -1 If Mid(extractStr, p, 1) Like CheckStr Then getStr = Mid(extractStr, p, 1) & getStr Else Exit For End If Next getStr = getStr & "@" For p = Index1 + 1 To Len(extractStr) If Mid(extractStr, p, 1) Like CheckStr Then getStr = getStr & Mid(extractStr, p, 1) Else getStr = getStr Exit For End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If循环结束功能
该评论由网站上的主持人最小化
感谢原剧本的作者; 我继续在多个电子邮件地址之间添加了一个“;”分隔符。 Function ExtractEmailFun(extractStr As String) As String 'Update 20150723 Dim CharList As String On Error Resume Next CheckStr = "[A-Za-z0-9._-]" ExtractEmailFun = "" Index = 1 Do While True Index1 = VBA。 InStr(Index, extractStr, "@") getStr = "" If Index1 > 0 Then For p = Index1 - 1 To 1 Step -1 If Mid(extractStr, p, 1) Like CheckStr Then getStr = Mid(extractStr, p, 1) & getStr Else Exit For End If Next getStr = getStr & "@" For p = Index1 + 1 To Len(extractStr) If Mid(extractStr, p, 1) Like CheckStr Then getStr = getStr & Mid(extractStr, p, 1) Else getStr = getStr Exit For End If Next Index = Index1 + 1 getStr = getStr & "; " If ExtractEmailFun = "" Then ExtractEmailFun = getStr Else ExtractEmailFun = ExtractEmailFun & Chr(10) & getStr End If Else Exit Do End If循环结束功能
该评论由网站上的主持人最小化
这很好! 谢谢你。
该评论由网站上的主持人最小化
兄弟,你真是个天才。 下面的公式对我有用并节省了过去需要数小时的手动干预 =TRIM(RIGHT(SUBSTITUTE(LEFT(H2,FIND (" ",H2&" ",FIND("@",H2))-1)," ", REPT(" ",LEN(H2))),LEN(H2))) 上帝保佑你
该评论由网站上的主持人最小化
我需要更多信息如何提取电子邮件
该评论由网站上的主持人最小化
尊敬的先生,我如何从下面的电子邮件列表示例中提取正确的电子邮件 ID a.hamilton@tradsingapore.com.sg aarabest@emirates.com.net.ae admin@countrywide.com.my
该评论由网站上的主持人最小化
由于公式对我有很大帮助,我想我会分享我的经验。 我针对 html webscrapes 列表运行它,这些列表有时太长以至于公式出错。 根据维基百科,电子邮件地址的最大长度为 254 个字符,因此将 len(A1) 部分替换为 256 可以提高函数的稳定性: =TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND (" ",A1&" ", FIND("@",A1))-1),"", REPT(" ",256)),256))
该评论由网站上的主持人最小化
太棒了,太棒了。 每个人都应该使用..
该评论由网站上的主持人最小化
如果我只想从 A1 中提取一个电子邮件地址,则此公式会这样做,并且如果 A1 不包含电子邮件地址,则只会报告一个空白,而不是错误。 我发现这是一个比试图掌握所有这些脚本更容易的解决方案,而且它没有任何成本。 =IFERROR(TRIM(RIGHT(SUBSTITUTE(LEFT(A1,FIND(“”,A1&“”,FIND(“@”,A1))-1),“”,REPT(“”,LEN(A1))), LEN(A1))),"")
该评论由网站上的主持人最小化
非常有帮助。 非常感谢!!
该评论由网站上的主持人最小化
令人敬畏的信息! 谢谢
该评论由网站上的主持人最小化
我在 HP 上使用 Excel 2007。 如果您在 A1 中有 Melanie Brown,并希望它在同一个单元格中阅读 Melanie.Brown@gmail.com,您如何完成此操作? 我有一串鬃毛可以做同样的事情。 有人会帮我解决这个问题吗?
这里还没有评论
加载更多
留下你的意见
以访客身份发帖
×
评价此帖子:
0   产品特性
建议地点

关注我们

版权所有 © 2009 - extendoffice.com。 | 版权所有。 供电 ExtendOffice。 | 网站地图
Microsoft和Office徽标是Microsoft Corporation在美国和/或其他国家的商标或注册商标。
受Sectigo SSL保护