Trong bài viết ngày hôm nay, chúng ta sẽ tìm hiểu cách xóa dữ liệu Excel trong các bảng danh sách bằng lệnh VBA Excel. Làm thế nào để loại bỏ dữ liệu thừa mà không phải thực hiện xóa thủ công? Các bạn hãy cùng Gitiho khám phá trong bài viết ngày hôm nay nhé.
Giả sử chúng ta có bảng dữ liệu Danh sách nhân viên dưới đây. Yêu cầu của đề bài bao gồm hai phần việc:
Nếu bạn chưa biết cách thêm mới dung vào một bảng danh sách trong Excel bằng lệnh VBA Excel, hãy tham khảo bài viết dưới đây nhé.
Xem thêm: Làm thế nào thêm mới nội dung vào bảng danh sách trong Excel bằng VBA
Trước khi bắt tay vào viết lệnh xóa dữ liệu trong Excel bằng VBA, chúng ta cần phân tích kỹ lưỡng yêu cầu của đề bài để thực hiện đúng các thao tác cần thiết. Để xóa một nội dung theo đúng phạm vi đã chọn, chúng ta cần hoàn thành các bước sau:
Việc chọn một vị trí trong bảng được gọi là một sự kiện xảy ra trong trang tính. Định nghĩa sự kiện này bao gồm tất cả các hành động chúng ta thao tác, ví dụ như nhập nội dung vào một ô tính, chọn một ô tính, thay đổi nội dung ô tính,... Để tìm hiểu cách chọn một ô tính hoặc thay đổi một ô tính sau khi đã chọn, các bạn hãy tham khảo bài viết dưới đây nhé.
Xem thêm: Hướng dẫn cách lấy thông tin trong bảng danh sách chỉ với 1 click chuột bằng VBA trong Excel
Sau khi đã xác định các bước thực hiện, chúng ta sẽ thao tác từng bước một để đảm bảo không xảy ra sai sót trong quá trình viết lệnh xóa dữ liệu trong Excel bằng VBA nhé.
Hãy bắt đầu với một lệnh VBA Excel xác định dòng được chọn bằng lệnh:
ActiveCell.Row
Các bạn hãy lưu ý dòng được chọn này phải nằm trong bảng Excel và có chứa dữ liệu, nghĩa là tính từ dòng bắt đầu của bảng tới dòng cuối cùng chứa dữ liệu trong bảng. Như vậy, dòng được chọn có thể nằm trong phạm vi từ dòng 8 tới dòng cuối bảng. Với điều kiện này, bạn sử dụng cấu trúc IF và viết một lệnh VBA Excel như sau:
If ActiveCell.Row <= 8 And ActiveCell.Row >= DongCuoi Then
…
End If
Lưu ý: Nếu dòng cuối của bảng Excel nhỏ hơn 8 (dòng đầu) nghĩa là bảng không có dữ liệu. Trong trường hợp này, bạn sẽ cần lồng thêm một cấu trúc IF nữa để loại bỏ bảng này khỏi phạm vi thao tác xóa dữ liệu Excel.
IF DongCuoi <8 Then
Exit Sub
ElseIf ActiveCell.Row <= 8 And ActiveCell.Row >= DongCuoi Then
…
End If
Nếu bảng Excel của bạn có quá nhiều dòng chứa dữ liệu, có lẽ bạn sẽ cần một phương thức tìm dòng cuối thay vì tự tìm thủ công. Hãy tìm hiểu cách sử dụng lệnh VBA Excel để tìm dòng cuối chứa dữ liệu trong bảng Excel tại bài viết dưới đây nhé.
Xem thêm: Hướng dẫn cách tìm dòng cuối trong VBA cho dữ liệu bảng Excel
Tiếp theo, chúng ta thực hiện làm trống nội dung ở dòng đã chọn từ cột A tới cột D trong bảng danh sách bằng lệnh:
Sheet1.Range(“A” & ActiveCell.Row & “:” & “D” & ActiveCell.Row).ClearContentsTrong đó, cấu trúc Sheet1.Rang sẽ xác định phạm vi ô từ cột A đến cột D của dòng đã chọn để cấu trúc ClearContents xóa dữ liệu Excel tồn tại trong phạm vi ô đó.
Sau khi đã xóa dữ liệu Excel thừa hoặc không còn chính xác, chúng ta tiến hành sắp xếp lại toàn bộ nội dung trong bảng để loại bỏ các khoảng trống vô nghĩa xen giữa. Lúc này, chúng ta sẽ sử dụng một macro bằng cách viết lệnh VBA Excel sau:
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Clear
ActiveWorkbook.Worksheets(“Sheet1”).Sort.SortFields.Add Key:=Range(“A8:A24”), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets(“Sheet1”).Sort
.SetRange Range(“A7:D24”)
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
Xem thêm: Hướng dẫn cách viết code để tự động sắp xếp bảng tính Excel bằng record macro
Kết hợp các câu lệnh đã viết là chúng ta đã có một lệnh VBA Excel hoàn chỉnh cho công việc xóa dữ liệu Excel rồi. Dưới đây là toàn bộ lệnh, bạn có thể copy và paste vào cửa sổ VBA để dễ dàng thao tác với dữ liệu trang tính của mình nhé.
Sub Lenh_Xoa_NoiDung()
'Tim dong cuoi bang du lieu
Dim DongCuoi As Long
DongCuoi = Sheet1.Cells(Rows.Count, 1).End(x1Up).Row
'Bien luan cac truong hop
If DongCuoi < 0 Then
Exit Sub
ElseIf ActivateCell.Row >= 0 And ActiveCell.Row <= DongCuoi Then
'Mo khoa sheet
Sheet1.Unprotect
'Xoa noi dung
Sheet1.Range("A" & ActiveCell.Row & ":" & "D" & ActiveCell.Row).ClearContents
'Sap xep voi chuc nang Sort cho bang trong pham vi A7:D24, bao gom ca dong tieu de
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A8:A24"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal
With ActiveWorkbook.Worksheets("Sheet1").Sort
.SetRange Range("A7:D24")
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
'Khoa Sheet
Sheet1.Protect
'Thong bao xoa thanh cong
MsgBox "Xoa du lieu thanh cong"
End If
End SubSau khi thoát cửa sổ VBA, hãy tạo một hộp thoại đại diện cho thao tác xóa dữ liệu Excel tại màn hình trang tính bằng cách sử dụng công cụ Shape. Bạn nhấn chuột phải tại hộp thoại vừa tạo và nhấn Assign Macro. Hộp thoại Assign Macro hiện lên, bạn chọn Lenh_Xoa_NoiDung để áp dụng lệnh xóa dữ liệu Excel cho hộp thoại.
Xem thêm: Hướng dẫn cách gán macro vào biểu tượng nút điều khiển tạo bởi Shapes trong Excel
Hãy cùng kiểm nghiệm macro cho bảng Excel của chúng ta nhé. Chúng ta sẽ thử áp dụng phương pháp xóa dữ liệu trong Excel bằng VBA vừa học để xóa thông tin nhân viên với mã NV003 tại dòng 10 tại bảng danh sách nhân sự. Sau khi chạy macro, bạn sẽ nhận được kết quả như hình dưới đây.
Nếu bạn nhìn thấy hộp thoại "Xóa dữ liệu thành công" hiện lên như trong hình nghĩa là chúng ta đã thực hiện được thao tác xóa dữ liệu trong bảng Excel rồi! Ngoài ra, VBA còn trợ giúp bạn xóa công thức mà vẫn giữ nguyên kết quả đó. Thật tuyệt phải không!
Qua bài viết ngày hôm nay, chúng ta đã tìm hiểu thêm một thủ thuật VBA Excel hữu hiệu nữa. Các bạn hãy lưu lại cách xóa dữ liệu Excel bằng lệnh VBA này, vì chắc chắn sẽ có một lúc bạn cần dùng đến nó đấy. Để thu thập thêm nhiều mẹo hay về VBA cũng như Excel, bạn hãy tham khảo các bài viết về chủ đề này trên blog Gitiho và đăng kí khóa học Tuyệt đỉnh VBA với chúng mình nhé.
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!