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。 然後按 Enter 鍵,然後選擇單元格B1,然後將填充手柄拖到要包含此公式的範圍。 並且已從文本字符串中提取了該範圍內的電子郵件地址。 看截圖:

文檔提取電子郵件4

筆記:

1.電子郵件地址後的標點符號也將被提取。

2.如果單元格中不包含電子郵件地址,則公式將顯示錯誤值。

3.如果一個單元格中有多個電子郵件地址,則該公式將僅提取第一個地址。


從文本字符串中提取多個電子郵件地址

Excel的Kutools 提取電子郵件地址 可以幫助您快速方便地從文本字符串中提取電子郵件地址。 點擊下載Kutools for Excel!

doc提取電子郵件-1

Excel的Kutools:具有300多個方便的Excel加載項,可以在30天內免費試用,沒有任何限制。 立即下載並免費試用!


箭頭藍色右氣泡 使用用戶定義的功能從文本字符串中提取電子郵件地址

除上述公式外,用戶定義函數還可以幫助您從文本字符串中獲取電子郵件地址。

1。 按住 ALT + F11 鍵,然後打開 Microsoft Visual Basic for Applications 窗口。

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。 然後按 Enter 鍵,選擇單元格B1,然後將填充手柄拖到所需公式的範圍內。 並且所有電子郵件地址均已從單元格文本中提取。 看截圖:

文檔提取電子郵件6

筆記:

1.如果單元格沒有電子郵件地址,它將顯示空白單元格。

2.如果一個單元中有多個電子郵件地址,則將提取所有電子郵件。


箭頭藍色右氣泡 使用VBA代碼從文本字符串中提取電子郵件地址

如果您認為上述公式對您來說很麻煩,則以下VBA代碼可以幫助您一次提取電子郵件地址。

1。 按住 ALT + F11 鍵,它會打開一個 Microsoft Visual Basic for Applications 窗口。

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初學者來說,以上方法看起來有些複雜,在這裡,我可以向您推荐一種快速簡便的工具- Excel的Kutools,其 提取電子郵件地址 實用程序,您可以輕鬆地從文本字符串中提取電子郵件地址。

Excel的Kutools : 帶有300多個便捷的Excel加載項,可以在30天內免費試用.

如果你已經安裝 Excel的Kutools,請執行以下操作:

1。 選擇包含文本字符串的單元格。

2。 點擊 庫工具 > 文本 > 提取電子郵件地址,請參見屏幕截圖:

3。 和 提取電子郵件地址 對話框將彈出,選擇要放置結果的單元格,請參見屏幕截圖:

文檔提取電子郵件9

4。 然後點擊 OK 按鈕,已從文本字符串中提取所有電子郵件地址,請參見屏幕截圖:

文檔提取電子郵件9

點擊下載並立即免費試用Excel的Kutools!


箭頭藍色右氣泡 演示:使用Kutools for Excel從文本字符串中提取電子郵件地址

Excel的Kutools:具有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保護