25/05/2018, 23:32

Hướng dẫn cách sử dụng AutoFilter với nhiều điều kiện cùng lúc trong VBA

Trong quá trình sử dụng AutoFilter để lọc dữ liệu, có thể chúng ta cần lọc theo nhiều giá trị điều kiện cùng lúc. Điều này sẽ rất hữu ích khi chúng ta phải làm việc với những dữ liệu lớn và nhu cầu lọc phức tạp. Trong ví dụ sau đây chúng ta sẽ tìm hiểu những cách Filter theo nhiều điều kiện ...

Trong quá trình sử dụng AutoFilter để lọc dữ liệu, có thể chúng ta cần lọc theo nhiều giá trị điều kiện cùng lúc. Điều này sẽ rất hữu ích khi chúng ta phải làm việc với những dữ liệu lớn và nhu cầu lọc phức tạp.

Trong ví dụ sau đây chúng ta sẽ tìm hiểu những cách Filter theo nhiều điều kiện thường gặp:

Lọc theo các giá trị cố định, có sẵn

Xét ví dụ sau:

Cho bảng tính sau, sử dụng VBA lọc những nội dung có xuất hiện của nhân viên An,Bình, Thảo trong cột Họ tên:

Sub FilterMult1()

Dim DS_Loc As Variant

DS_Loc=Array(“An”, “Bình”, “Thảo”)

Range(“A1”, Range(“A” & Rows.Count).End(xlUp)).AutoFilter 1, DS_Loc, xlFilterValues, , 0

End Sub

Xem hình kết quả lọc bằng câu lệnh trên:

Hai giá trị “An” và “Bình” đã lọc đúng, tuy nhiên giá trị “Thảo” không lọc được bởi VBA không hỗ trợ tốt tiếng việt, nên nội dung này đang bị lỗi.
Chúng ta có thể khắc phục bằng cách như sau:
– Gán các điều kiện cần lọc vào các ô D1 = “An”, D2 = “Bình”, D3 = “Thảo”
– Đưa các ô được gán đó vào trong Array như sau:
Nhu vậy chúng ta có thể thấy kết quả lọc đã bao gồm cả 3 đối tượng theo đúng mục đích ban đầu.

Lọc theo các giá trị động, có thể thay đổi

Trong dạng lọc này cho phép chúng ta có thể không cần xác định cụ thể nội dung cần lọc, mà chỉ cần xác định một khoảng mà kết quả cần lọc có thể nằm trong đó. Phương pháp này phù hợp khi xử lý với dữ liệu có kết cấu lớn, phức tạp, nhiều nội dung, hoặc dùng với mục đích cho phép nội dung có thể phát triển trong tương lai mà không cần thay đổi lệnh lọc dữ liệu.
Sub FilterMulti2()
Dim i As Integer
Dim ar(1 To 100) As String

For i=2 To Sheet2.[A65536].End(xlUp).Row

ar(i – 1)=Sheet2.Range(“A” & i)

Next i

[A1].AutoFilter 1, ar, xlFilterValues

End Sub

Trong câu lệnh ví dụ này chúng ta hiểu như sau:
– Xác định các biến: i và ar. Ar có giá trị từ 1 đến 100
– Thực hiện vòng lặp: Với mỗi giá trị i từ dòng 2 tới dòng cuối cùng trong Sheet2
Kết quả ở Sheet2, cột A, dòng i có giá trị = Giá trị trong mảng ar có giá trị i-1  => Lọc các giá trị kết quả thu được ở cột A
Chúc các bạn học tốt cùng Học Excel Online
0