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 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.
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!