Cách Xoá Bỏ Các Hàng Trùng Lặp Khỏi Bảng Trong Word

Rate this post

Khi làm việc với tài liệu Word, nếu tài liệu có rất nhiều bảng được chèn vào có thể sẽ có một số bảng có các hàng trùng lặp mà bạn muốn loại bỏ. Trong trường hợp này, bạn có thể chọn xóa từng cái trùng lặp theo cách thủ công hoặc cũng có thể tìm và xoá bỏ các hàng trùng lặp khỏi bảng bằng cách sử dụng mã VBA.

Hướng dẫn dưới đây được thực hiện trên máy tính chạy hệ điều hành Window, phiên bản Word 2016, bạn có thể thực hiện tương tự trên các hệ điều hành cũng như phiên bản Word khác.

Hướng dẫn xóa bỏ các hàng trùng lặp khỏi bảng trong Word

 

Bước 1: Mở tài liệu Word cần xóa các hàng trùng lặp khỏi bảng.

Bước 2: Kích con trỏ chuột vào bảng mà bạn muốn xóa các hàng trùng lặp, nhấn tổ hợp phím Alt + F11 để bật cửa sổ Microsoft Visual Basic for Applications.

Xóa các hàng trùng lặp khỏi bảng trong Word

Xóa các hàng trùng lặp khỏi bảng trong Word

Bước 3: Trong giao diện Microsoft Visual Basic for Applications hiển thị, truy cập vào menu Insert > Module để tạo Module mới.

Public Sub DeleteDuplicateRows2()
‘UpdatebyExtendoffice20181011
    Dim xTable As Table
    Dim xRow As Range
    Dim xStr As String
    Dim xDic As Object
    Dim I, J, KK, xNum As Long
    If ActiveDocument.Tables.Count = 0 Then
        MsgBox “This document does not have table(s).”, vbInformation, “Kutools for Word”
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Set xDic = CreateObject(“Scripting.Dictionary”)
    If Selection.Information(wdWithInTable) Then
        Set xTable = Selection.Tables(1)
        For I = xTable.Rows.Count To 1 Step -1
            Set xRow = xTable.Rows(I).Range
            xStr = xRow.Text
            xNum = -1
            If xDic.Exists(xStr) Then
‘                xTable.Rows(I).Delete
                For J = xTable.Rows.Count To 1 Step -1
                    If (xStr = xTable.Rows(J).Range.Text) And (J <> I) Then
                        xNum = xNum + 1
                        xTable.Rows(J).Delete
                    End If
                Next
                I = I – xNum
            Else
                xDic.Add xStr, I
            End If
        Next
    Else
        For I = 1 To ActiveDocument.Tables.Count
            Set xTable = ActiveDocument.Tables(I)
            xNum = -1
            xDic.RemoveAll
            For J = xTable.Rows.Count To 1 Step -1
                Set xRow = xTable.Rows(J).Range
                xStr = xRow.Text
                xNum = -1
                If xDic.Exists(xStr) Then
    ‘                xTable.Rows(I).Delete
                    For KK = xTable.Rows.Count To 1 Step -1
                        If (xStr = xTable.Rows(KK).Range.Text) And (KK <> J) Then
                            xNum = xNum + 1
                            xTable.Rows(KK).Delete
                        End If
                    Next
                    J = J – xNum
                Else
                    xDic.Add xStr, J
                End If
            Next
        Next
    End If
    Application.ScreenUpdating = True
End Sub

Bước 4: Sao chép mã bên dưới và dán chúng vào tập lệnh Module mới.

Bước 5: Nhấn phím F5 để chạy mã, sau đó tất cả các hàng trùng lặp trong các bảng sẽ bị loại bỏ.

Lưu ý: Mã trên có phân biệt chữ hoa chữ thường, nếu bạn muốn loại bỏ các hàng trùng lặp trong trường hợp không phân biệt chữ hoa chữ thường, bạn có thể sử dụng mã dưới đây:

Public Sub DeleteDuplicateRows2()
‘UpdatebyExtendoffice20181011
    Dim xTable As Table
    Dim xRow As Range
    Dim xStr As String
    Dim xDic As Object
    Dim I, J, KK, xNum As Long
    If ActiveDocument.Tables.Count = 0 Then
        MsgBox “This document does not have table(s).”, vbInformation, “Hoc Word voi Gitiho”
        Exit Sub
    End If
    Application.ScreenUpdating = False
    Set xDic = CreateObject(“Scripting.Dictionary”)
    If Selection.Information(wdWithInTable) Then
        Set xTable = Selection.Tables(1)
        For I = xTable.Rows.Count To 1 Step -1
            Set xRow = xTable.Rows(I).Range
            xStr = UCase(xRow.Text)
            xNum = -1
            If xDic.Exists(xStr) Then
‘                xTable.Rows(I).Delete
                For J = xTable.Rows.Count To 1 Step -1
                    If (xStr = xTable.Rows(J).Range.Text) And (J <> I) Then
                        xNum = xNum + 1
                        xTable.Rows(J).Delete
                    End If
                Next
                I = I – xNum
            Else
                xDic.Add xStr, I
            End If
        Next
    Else
        For I = 1 To ActiveDocument.Tables.Count
            Set xTable = ActiveDocument.Tables(I)
            xNum = -1
            xDic.RemoveAll
            For J = xTable.Rows.Count To 1 Step -1
                Set xRow = xTable.Rows(J).Range
                xStr = UCase(xRow.Text)
                xNum = -1
                If xDic.Exists(xStr) Then
    ‘                xTable.Rows(I).Delete
                    For KK = xTable.Rows.Count To 1 Step -1
                        If (xStr = xTable.Rows(KK).Range.Text) And (KK <> J) Then
                            xNum = xNum + 1
                            xTable.Rows(KK).Delete
                        End If
                    Next
                    J = J – xNum
                Else
                    xDic.Add xStr, J
                End If
            Next
        Next
    End If
    Application.ScreenUpdating = True
End Sub

Nếu bạn muốn xóa các hàng trùng lặp trong tất cả các bảng của tài liệu, hãy đặt con trỏ vào bất kỳ vị trí nào của tài liệu bên ngoài bảng, sau đó áp dụng một trong các mã trên.

Trên đây Admin Edu vừa hướng dẫn các bạn cách xoá bỏ các hàng trùng lặp khỏi bảng (Tablet) được chèn trong Word. Hi vọng các bạn thấy bài viết hữu ích. Chúc các bạn thành công!