Hỗ trợ tách từ Tiếng Việt không có dấu bằng VBA

Chia sẻ bởi:hands
★★★★★
Quảng cáo

Chào anh chị em có vấn đề này nhờ anh chị hỗ trợ giúp em.

Dữ liệu của em nằm ở cột A trong sheet GPE
Kết quả mong muốn của em là cột B trong sheet GPE
Nội dung:
Từ cột A, tách dữ liệu không có dấu tiếng Việt sang cột B, sau đó remove dulicate cột B.
Dữ liệu không dấu là là các chữ abcd.. không có tính số ở đây nhé anh chị.
7230
Nhờ anh chị hỗ trợ giúp em sheet GPE nhé. Em cảm ơn anh chị.

Cho em nói thêm. Mục đích chính của bài này thật sự đúng của nó là tách các từ tiếng Anh ra, nhưng tách tiếng Anh thì không khả thi. Nên em chỉ mong muốn là tách từ không có dấu thôi, tách được vậy là em mừng lắm rồi. (còn chuyện lọc thêm tiếng việt tiếng Anh thì em xử lý sau)
7229
Sau khi có được từ tiếng Anh thì em sẽ bỏ nó vào Sheet Replace để làm chuyển đổi. Cái này là em nói thêm để rõ mục đích chính của em thôi nhé anh chị.

Bạn lên mạng kiếm code RegexExtract rồi mình xem hỗ trợ pattern 😀

Không biết ý anh có phải là cái này không nhỉ

Function RegexExtract(ByVal text As String, ByVal pattern As String) As String
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")

With regex
        .Global = True
        .MultiLine = True
        .IgnoreCase = False
        .pattern = pattern
    End With

If regex.test(text) Then
        Set matches = regex.Execute(text)
        RegexExtract = matches(0)
    Else
        RegexExtract = ""
    End If
End Function

docs.google.com/spreadsheets/d/1-1tiOtB5AC5nKz829tWQnzXgLReXrgp3Z-k49W6gLow/edit?usp=sharing

Chắc phải chế biến một chút, Code này:

Option Explicit

Public Function RegexExtract(Value As Variant, Pattern As String, k As Long) As String
    Static objRegex As Object
    Dim colRegexMatches As Object
    'k bat dau tu 1
    If objRegex Is Nothing Then Set objRegex = CreateObject("VBScript.Regexp")
    With objRegex
        .Pattern = Pattern
        .Global = True
        .IgnoreCase = False
        .MultiLine = True
    End With
    RegexExtract = objRegex.Execute(Value)(k - 1).submatches(0)
End Function

Và trên sheet dùng công thức này: Kéo xuống, kéo sang phải:

=IFERROR(RegexExtract($A2,"(?:^|s)([a-zA-Z]+)(?=s|$)",COLUMN(A1)),"")

www.giaiphapexcel.com/diendan/threads/h%E1%BB%97-tr%E1%BB%A3-t%C3%A1ch-t%E1%BB%AB-ti%E1%BA%BFng-vi%E1%BB%87t-kh%C3%B4ng-c%C3%B3-d%E1%BA%A5u-b%E1%BA%B1ng-vba.165886/

Khoá học Trưởng phòng nhân sự
Khóa học SprinGO phù hợp

Khoá học Trưởng phòng nhân sự

Nguồn nhân lực là một trong Tứ trụ kinh doanh của doanh nghiệp, có tác động tới sự tồn tại và phát triển bền...

Xem khóa học
★★★★★ 5 ★ 1 👤 1 ▥ 0
Quảng cáo

Bạn nên đọc

Bình luận

Quảng cáo

Cũ vẫn chất

Xem thêm