- Tham gia
- 30/5/06
- Bài viết
- 1,630
- Được thích
- 17,441
- Nghề nghiệp
- Bác sĩ
Lê Văn Duyệt
Công cụ AutoFilter và Advanced Filter là công cụ mạnh trong Excel, nó giúp cho người sử dụng lọc và lấy khối dữ liệu cần thiết.

1/ Đối với AutoFilter :
Khi sử dụng công cụ này nếu chú ý, bạn sẽ thấy rằng Excel nhớ vùng trước đó bạn lọc. Trong một số trường hợp thì điều này hữu ích. Nhưng nếu bạn muốn làm việc với các vùng khác thì thật là bất tiện. Excel lưu giữ vùng lọc của bạn với tên _FilterDatabase. Bạn không thể xoá tên này bằng cách thông thường là vào Insert/Name/Define

Giả sử tôi có vùng dữ liệu muốn lọc là vùng A1:E5 của Sheet1

Tôi Click và ô A2 và chọn Data/Filter/AutoFilter. Sau đó tôi chọn Insert/Name/Define. Hộp thoại Define Name xuất hiện. Nhưng bạn sẽ không thấy một tên nào cả (giả sử rằng trước đó bạn chưa đặt tên cho vùng nào cả).

Tên _FilterDatabase là loại hidden. Vì vậy bạn sẽ không thấy được bằng cách này. Bây giờ giả sử tôi nhập vào ô A6 với nội dung Lê Quốc và ô B6 với nội dung Cường các ô khác tôi không nhập (bạn cũng có thể nhập nội dung vào các ô khác, ở đây do làm ví dụ tôi giản lược bớt). Tôi chọn điều kiện lọc ở cột địa chỉ là: Quận Thủ Đức.

Kết quả lọc của tôi sẽ như sau:

Bạn thấy rằng hàng bạn vừa nhập vào cũng bị Hide luôn. Bây giờ tôi chọn điều kiện lọc ở cột Diachi là All để tôi bỏ điều kiện lọc vừa rồi. Sau đó tôi xoá dữ liệu vừa nhập vào ở ô A6 và B6. Sau đó tôi lại lập lại điều kiện lọc ở cột Diachi là Quận Thủ Đức. Bạn sẽ thấy hàng số 6 cũng bị dấu luôn.
Vâng đó là bất tiện của AutoFilter.
_Đối với AdvancedFilter
Tương tự đối với AdvancedFilter. Tôi chọn Data/Filter/AdvancedFilter với các dữ liệu như sau:


Kết quả tôi được các dữ liệu ở hàng 16 và 17 dưới đây.

Đến lúc này nếu bạn chọn Insert/Name/Define bạn sẽ thấy hai tên Criteria, và Extract trong hộp thoại Define Name

Với công cụ AdvanceFilter ngoài hai vùng có tên trên bạn cũng được vùng có tên là _FilterDatabase. Nhưng như đã nói ở trên, tên này không thể thấy hay xoá được theo cách thông thường. Tuy nhiên, bạn có thể sử dụng đoạn mã VBA đơn giản sau để xoá và gọi hộp thoại AdvanceFilter:
PHP:
Sub ShowAdvancedFilterDialog()
' Xoa cac ten'
On Error Resume Next
With ActiveWorkbook
.Names("_FilterDatabase").Delete
.Names("Criteria").Delete
.Names("Extract").Delete
End With
On Error GoTo 0
' Goi hop thoai '
Application.Dialogs(xlDialogFilterAdvanced).Show
End Sub
Nếu bạn không sử dụng AdvanceFilter, thì bạn có thể sửa lại đoạn mã trên như sau:
PHP:
Sub DeleteNames()
' Xoa cac ten'
On Error Resume Next
With ActiveWorkbook
.Names("_FilterDatabase").Delete
End With
End Sub
Để sử dụng thủ tục này bạn copy thủ tục trên và đưa vào VBA module. Khi cần sử dụng bạn dùng phím nóng Alt + F8, sau đó chọn thủ tục mà bạn muốn chạy và chọn Run.
Tóm lại một khi bạn không muốn Excel tự động lấy vùng lọc trước đó thì bạn sử dụng các thủ tục trên.
Chúc các bạn thành công. Hy vọng bài viết trên sẽ giúp ích các bạn phần nào trong công việc.
Mọi góp ý xin gởi cho tôi theo địa chỉ email sau:
levanduyet@pmail.vnn.vn
Lê Văn Duyệt.