VBA AutoFilter

Trong VBA, bạn có thể tạo Bộ lọc tự động để lọc một dải ô hoặc một bảng Excel. Trong hướng dẫn này, bạn sẽ học cách tạo Bộ lọc tự động cho một hoặc nhiều cột và cho nhiều điều kiện.

Nếu bạn muốn tìm hiểu cách sử dụng bộ lọc nâng cao trong VBA, hãy nhấp vào đây: Bộ lọc nâng cao VBA

Tạo AutoFilter trong VBA

Đầu tiên, bạn sẽ thấy cách tạo Bộ lọc tự động trong một phạm vi, để người dùng có thể lọc dữ liệu. Dữ liệu mà chúng tôi sẽ sử dụng trong các ví dụ có trong Hình ảnh 1:

Hình ảnh 1. Dữ liệu cho các ví dụ về AutoFilter

Đây là mã để tạo Bộ lọc tự động:

1 Sheet1.Range ("A1: E1"). AutoFilter

Để kích hoạt Bộ lọc tự động, chúng tôi cần chỉ định tiêu đề của phạm vi, trong trường hợp của chúng tôi là A1: E1 và sử dụng Bộ lọc tự động phương pháp của đối tượng Phạm vi. Do đó, phạm vi dữ liệu của chúng tôi đã được kích hoạt các bộ lọc:

Hình ảnh 2. AutoFilter được kích hoạt cho dữ liệu

Tự động lọc với các thông số trường và tiêu chí

VBA cũng cho phép bạn tự động lọc một trường nhất định với các giá trị nhất định.

Để làm được điều này, bạn phải sử dụng các tham số Đồng ruộngTiêu chí1 của phương pháp Bộ lọc tự động. Trong ví dụ này, chúng tôi muốn lọc cột thứ ba (Sản phẩm) vì Sản phẩm A chỉ một. Đây là mã:

12 Sheet1.Range ("A1: E1"). Trường AutoFilter: = 3, _Criteria1: = "Sản phẩm A"

bên trong Đồng ruộng , bạn có thể đặt số cột trong phạm vi (không phải trong Excel), trong khi Tiêu chí1 bạn có thể đặt giá trị mà bạn muốn lọc. Sau khi thực thi mã, bảng của chúng tôi trông giống như sau:

Hình 3. Tự động lọc với trường và tiêu chí

Như bạn có thể thấy, chỉ các hàng có Sản phẩm A trong cột thứ ba được hiển thị trong phạm vi dữ liệu.

Tự động lọc với Trường và Nhiều Giá trị Tiêu chí

Nếu bạn muốn lọc một trường có nhiều giá trị, bạn cần sử dụng tham số Nhà điều hành sau đó Bộ lọc tự động phương pháp. Để lọc nhiều giá trị, bạn cần đặt Nhà điều hành đến xlFilterValues và cũng để đặt tất cả các giá trị của Tiêu chuẩn trong một Mảng. Trong ví dụ này, chúng tôi lọc Sản phẩm cột cho Sản phẩm A Sản phẩm B. Đây là ví dụ về mã:

123 Sheet1.Range ("A1: E1"). Trường AutoFilter: = 3, _Criteria1: = Array ("Sản phẩm A", "Sản phẩm B"), _Toán tử: = xlFilterValues

Khi chúng tôi thực thi mã, chúng tôi chỉ nhận được các hàng có Sản phẩm A và Sản phẩm B, như bạn có thể thấy trong Hình ảnh 4:

Hình 4. Tự động lọc với nhiều giá trị tiêu chí

Dải dữ liệu tự động lọc với nhiều tiêu chí

Nếu bạn muốn lọc một trường có nhiều tiêu chí, bạn phải sử dụng Tiêu chí1Tiêu chí2 tham số mà còn Toán tử xlAnd.

Trong ví dụ tiếp theo, chúng tôi sẽ lọc cột đầu tiên (Ngày) cho các ngày trong tháng 12 năm 2022. Do đó, chúng tôi có hai tiêu chí: ngày lớn hơn 12/01/18 và nhỏ hơn 31/12/18. Đây là mã:

1234 Sheet1.Range ("A1: E1"). Trường AutoFilter: = 1, _Criteria1: = "> = 12/01/2018", _Toán tử: = xlAnd, _Tiêu chí2: = "<= 12/31/2018"

Khi chúng tôi thực thi mã, bạn có thể thấy rằng chỉ các ngày trong tháng 12 mới được hiển thị trong phạm vi dữ liệu:

Hình ảnh 5. Tự động lọc với nhiều tiêu chí cho trường

Giá trị tham số toán tử của phương pháp AutoFilter

Trong bảng tiếp theo. bạn có thể thấy tất cả các giá trị có thể có của Nhà điều hành tham số của phương thức AutoFilter và mô tả của chúng:

Nhà điều hành Sự miêu tả
xlAnd Bao gồm nhiều tiêu chí - Tiêu chí 1 và Tiêu chí 2
xlOr Bao gồm một trong nhiều tiêu chí - Tiêu chí 1 hoặc Tiêu chí 2
xlTop10Items Lọc một số giá trị được xếp hạng cao nhất nhất định (số được chỉ định trong Criteria1)
xlBottom10Items Lọc một số giá trị được xếp hạng thấp nhất nhất định (số được chỉ định trong Criteria1)
xlTop10Percent Lọc một tỷ lệ phần trăm nhất định của các giá trị được xếp hạng cao nhất (% được chỉ định trong Criteria1)
xlBottom10Percent Lọc một tỷ lệ phần trăm nhất định của các giá trị được xếp hạng thấp nhất (% được chỉ định trong Criteria1)
xlFilterValues Bao gồm nhiều giá trị tiêu chí với Mảng
xlFilterCellColor Lọc các ô cho màu sắc
xlFilterFontColor Lọc các ô cho màu phông chữ
xlFIlterIcon Biểu tượng bộ lọc
xlFilterDynamic Lọc các giá trị động

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave