Trích xuất email từ chuỗi văn bản trong bảng tính excel / google


9

Tôi đang tìm cách trích xuất địa chỉ email từ các chuỗi văn bản trong Google Docs / Excel và gửi email tự động, trong đó nội dung của các ô hiện không xác định (cho đến khi được người dùng cập nhật).

Ví dụ, họ có thể đọc:

  1. Chào,

    Bạn của tôi example@example.com.

    Cảm ơn,

    Ví dụ Joe

HOẶC LÀ

  1. Bạn nên hỏi

    example@example.co.uk

Tôi hiện đã có công thức này:

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

Nó hoạt động cho hầu hết các trường hợp, ngoại trừ

a) như trong ví dụ 1, trong đó ai đó đặt a, hoặc. ở cuối email

b) như trong ví dụ 2, trong đó email bắt đầu trên một dòng mới, nó đi vào như ví dụ.

hỏi

example@example.com

Làm thế nào tôi có thể điều chỉnh công thức để sửa những điều này?

Câu trả lời:


7

Đối với Bảng tính Google

Bảng tính Google có các công thức regex đã được xây dựng sẵn này

Chúng tôi sử dụng cái đầu tiên để trích xuất địa chỉ mail. Đặt công thức này vào một ô Bảng tính Google:

=iferror(Regexextract(A1;"[A-z0-9._%+-]+@[A-z0-9.-]+\.[A-z]{2,4}");"")
  • A1 là ô nơi kiểm tra chuỗi (phần thân thư trong trường hợp của bạn) sẽ nằm trong
  • Công thức hoàn chỉnh bao gồm 2 phần. Phần bên trong là công thức regex và phần bên ngoài là để ngăn ngừa lỗi
  • Regexextract(A1,"\[A-z0-9._%+-\]+@\[A-z0-9.-\]+\.\[A-z\]{2,4}") trả về địa chỉ thư
  • iferror(innerformula,"")ngăn chặn #N/Akhi công thức regex không thể trả về bất cứ thứ gì, ví dụ như không tìm thấy địa chỉ thư hợp lệ

nhập mô tả hình ảnh ở đây

Làm thế nào để mô hình regex hoạt động?

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

  • A-zđại diện cho bất kỳ ký tự giữa một Avà a z.
    Lưu ý chữ hoa và chữ thường. Cách này không phân biệt chữ hoa chữ thường
  • 0-9 đại diện cho bất kỳ chữ số
  • ._%+- đại diện cho những dấu hiệu đó
  • [ ] đại diện cho một ký tự được phép trong dấu ngoặc
  • Đặt một +dấu hiệu phía sau [ ]cho phép mô hình trước đó được lặp lại vô hạn
  • @không có ý nghĩa đặc biệt. Nó thực sự tìm kiếm một @dấu hiệu
  • [A-z0-9.-]+cũng giống như trên. Nhưng _%+không được phép đằng sau một @dấu hiệu lần này
  • \.tìm kiếm một điểm duy nhất Nó phải được thoát với tiền lệ \.thông thường là giữ chỗ cho bất kỳ ký tự nào
  • Ở lần [A-z]{2,4}tìm kiếm cuối cùng cho 2,3 hoặc 4 ký tự không phân biệt chữ hoa chữ thường

Nguồn tài nguyên đã qua sử dụng


Cảm ơn bạn đã trả lời hữu ích của bạn. Một suy nghĩ tôi có là điều đó {2, 4}có thể hạn chế vì nhiều TLD sắp tới như .codesvượt quá 4 ký tự.
Alex Booker

1

Cái này dành cho Excel.

Hãy xem xét Hàm do người dùng xác định (UDF) sau đây:

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

Hàm do người dùng xác định (UDF) rất dễ cài đặt và sử dụng:

  1. ALT-F11 xuất hiện cửa sổ VBE
  2. ALT-I ALT-M mở ra một mô-đun mới
  3. dán nội dung vào và đóng cửa sổ VBE

Nếu bạn lưu sổ làm việc, UDF sẽ được lưu cùng với nó. Nếu bạn đang sử dụng phiên bản Excel sau đó sau 2003, bạn phải lưu tệp dưới dạng .xlsm chứ không phải .xlsx

Để xóa UDF:

  1. đưa lên cửa sổ VBE như trên
  2. xóa mã ra
  3. đóng cửa sổ VBE

Để sử dụng UDF từ Excel:

=GetEmailAddy(A1)

Để tìm hiểu thêm về macro nói chung, xem:

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

http://msdn.microsoft.com/en-us/l Library / e814735 (v = office.14) .aspx

và để biết chi tiết về UDF, xem:

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

Macro phải được kích hoạt để làm việc này!

Dưới đây là một số ví dụ:

nhập mô tả hình ảnh ở đây

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.