Trong trường hợp bạn muốn một quy trình giúp bạn truy xuất địa chỉ email từ chuỗi thì bài viết này là dành cho bạn. Trong bài viết này, chúng tôi sẽ tạo UDF để kéo id email từ văn bản.

Câu hỏi): Dữ liệu tôi có chứa quá nhiều thông tin ở định dạng văn bản. Tôi muốn có mã VBA để giúp tôi trích xuất càng nhiều id email từ văn bản để giảm thiểu các nỗ lực thủ công của tôi.

Chúng ta cần làm theo các bước sau:

Nhấp vào tab Nhà phát triển Từ nhóm Mã, chọn Visual Basic

img1

===

Nhập mã sau vào mô-đun chuẩn:

Hàm ExtractEmailFromText (s As String) As String Dim AtTheRateSignSymbol As Long Dim i As Long

Dim TempStr As String

Const CharList As String = “[A-Za-z0-9 ._-]”

===

AtTheRateSignSymbol = InStr (s, “@”)

Nếu AtTheRateSignSymbol = 0 Thì

ExtractEmailFromText = “”

Khác

TempStr = “”

Đối với i = AtTheRateSignSymbol – 1 đến 1 bước -1

Nếu Mid (s, i, 1) Thích CharList thì

TempStr = Mid (s, i, 1) & TempStr

Khác

Thoát cho

Kết thúc Nếu

Tiếp theo tôi

If TempStr = “” Then Exit Function

TempStr = TempStr & “@”

Đối với i = AtTheRateSignSymbol + 1 Tới Len (s)

Nếu Mid (s, i, 1) Thích CharList thì

TempStr = TempStr & Mid (s, i, 1)

Khác

Thoát cho

Kết thúc Nếu

Tiếp theo tôi

Kết thúc Nếu

Nếu Đúng (TempStr, 1) = “.” Thì TempStr = _

Còn lại (TempStr, Len (TempStr) – 1)

ExtractEmailFromText = TempStr

Chức năng kết thúc

img2

  • Trong ô B2, công thức là

* = ExtractEmailFromText (A2)

Chúng tôi sẽ nhận được kết quả. Tham khảo ảnh chụp nhanh dưới đây:

img3

Đoạn mã trên sẽ trích xuất địa chỉ email đầu tiên trong trường hợp có nhiều hơn 1 id email trong một ô.

Bằng cách này, chúng ta có thể lấy email từ văn bản.

image 19