Khi làm việc với lượng dữ liệu lớn và cần thiết lập nhiều bộ lọc cùng một lúc, Bộ Lọc Nâng Cao (Advanced Filtering) trong Excel rất tiện lợi. Nó cũng có thể được áp dụng để dọn dẹp dữ liệu của bạn bằng cách loại bỏ các bản sao. Khi áp dụng Bộ Lọc Nâng Cao, mã VBA dễ dàng thực thi hơn nhiều. Trong hướng dẫn này, chúng tôi sẽ chỉ cho bạn cách áp dụng VBA Advanced Filter cho phạm vi nhiều tiêu chí trong Excel.
5 Phương Pháp Hiệu Quả Cho VBA Advanced Filter Với Nhiều Tiêu Chí Trong Phạm Vi Trong Excel
Trong các phần dưới đây, chúng ta sẽ thảo luận 5 phương pháp để sử dụng VBA Advanced Filter cho nhiều tiêu chí. Trước tiên, bạn có thể cần biết cú pháp của VBA Advanced Filter.
Cú Pháp VBA Advanced Filter:

- AdvancedFilter: tham chiếu đến một đối tượng phạm vi. Bạn có thể thiết lập phạm vi nơi bạn muốn áp dụng Bộ Lọc.
- Action: là đối số bắt buộc có hai tùy chọn, xlFilterInPlace hoặc xlFilterCopy. xlFilterInPlace được dùng để lọc giá trị tại chỗ nơi tập dữ liệu nằm. xlFilterCopy được dùng để lấy giá trị lọc ở một vị trí mong muốn khác.
- CriteriaRange: đại diện cho tiêu chí mà giá trị sẽ được lọc theo.
- CopyToRange: là vị trí nơi bạn sẽ lưu kết quả lọc.
- Unique: là đối số tùy chọn. Sử dụng đối số True để chỉ lọc các giá trị duy nhất. Ngược lại, theo mặc định nó được coi là False.
Trong hình ảnh dưới đây, một tập dữ liệu mẫu được cung cấp để áp dụng tất cả các bộ lọc chúng ta muốn thực hiện.

1. Áp Dụng VBA Advanced Filter Cho Tiêu Chí OR Trong Phạm Vi Trong Excel
Trong phương pháp đầu tiên, chúng ta sẽ áp dụng tiêu chí OR sử dụng VBA Advanced Filter. Giả sử, chúng ta muốn lọc dữ liệu cho tên sản phẩm Bánh Quy (Cookies) và Sô Cô La (Chocolate). Để áp dụng tiêu chí OR, bạn nên đặt giá trị ở các hàng khác nhau. Làm theo các bước được nêu dưới đây để thực hiện nhiệm vụ.

Bước 1:
- Nhấn Alt + F11 để mở VBA Macro.
- Nhấp vào Chèn (Insert).
- Chọn Module.

Bước 2:
- Sau đó, dán mã VBA sau để áp dụng OR.
Sub Apply_VBA_Advanced_Filter_for_OR_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of datase range and criteria range Set Dataset_Rng = Sheets("Sheet1").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet1").Range("B14:E16") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub

Bước 3:
- Sau đó, lưu chương trình và nhấn F5 để chạy.
- Do đó, bạn sẽ nhận được kết quả lọc như hình ảnh dưới đây.

Ghi Chú. Để đảo ngược quy trình hoặc loại bỏ tất cả bộ lọc, dán và chạy chương trình VBA.
Sub Remove_All_Filter() On Error Resume Next 'command to remove all the filter to show the previous dataset ActiveSheet.ShowAllData End Sub

- Kết quả, bạn sẽ nhận lại phiên bản trước của tập dữ liệu của mình.

Đọc Thêm: Ví Dụ Excel VBA Của Bộ Lọc Nâng Cao Với Tiêu Chí (6 Tiêu Chí)
2. Thực Hiện VBA Advanced Filter Cho Tiêu Chí AND Trong Phạm Vi Trong Excel
Tương tự như phương pháp trước, chúng ta sẽ thực hiện VBA Advanced Filter cho tiêu chí AND. Giả sử chúng ta muốn biết bánh quy có giá $0.65 như trong ảnh chụp màn hình dưới đây. Để áp dụng tiêu chí OR, bạn nên đặt giá trị ở các hàng khác nhau. Để áp dụng tiêu chí AND, hãy làm theo hướng dẫn dưới đây.

Bước 1:
- Để mở VBA Macro, nhấn Alt + F11.
- Sau khi mở VBA Macro, dán mã VBA sau vào Module mới.
Sub Apply_VBA_Advanced_Filter_for_AND_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet2").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet2").Range("B14:E15") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub

Bước 2:
- Nhấn F5 để chạy chương trình sau khi bạn đã lưu nó.
- Cuối cùng, nhận kết quả lọc.

Đọc Thêm: VBA Sao Chép Dữ Liệu Sang Trang Tính Khác Với Bộ Lọc Nâng Cao Trong Excel
3. Sử Dụng VBA Advanced Filter Cho Tiêu Chí OR Kết Hợp AND Trong Phạm Vi Trong Excel
Bạn cũng có thể áp dụng cả tiêu chí OR và AND kết hợp. Ví dụ, bạn muốn lấy giá trị cho Bánh Quy hoặc Sô Cô La, nhưng đối với Bánh Quy, có tiêu chí khác là giá $0.65 sẽ được áp dụng. Làm theo quy trình dưới đây để hoàn thành.

Bước 1:
- Dán mã VBA sau sau khi mở VBA Macro.
Sub Apply_VBA_Advanced_Filter_for_OR_with_AND_Criteria() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet3").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet3").Range("B14:E16") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub

Bước 2:
- Sau đó, lưu chương trình trước và nhấn F5 để chạy nó.
- Do đó, bạn sẽ tìm thấy các giá trị với AND và OR cụ thể.

Đọc Thêm: Áp Dụng Bộ Lọc Nâng Cao Dựa Trên Nhiều Tiêu Chí Trong Một Cột Trong Excel
Đọc Tương Tự:
- Bộ Lọc Nâng Cao Với Nhiều Tiêu Chí Trong Excel (15 Ví Dụ Phù Hợp)
- Bộ Lọc Nâng Cao Động Excel (VBA & Macro)
- Cách Sử Dụng Bộ Lọc Nâng Cao Trong VBA (Hướng Dẫn Bước Đi Bước)
- Bộ Lọc Nâng Cao Với Phạm Vi Tiêu Chí Trong Excel (18 Ứng Dụng)
- Excel Advanced Filter Không Hoạt Động (2 Lý Do & Giải Pháp)
4. Sử Dụng VBA Advanced Filter Cho Giá Trị Duy Nhất Với Nhiều Tiêu Chí Trong Excel
Hơn nữa, nếu bạn có dữ liệu trùng lặp trong tập dữ liệu của mình, bạn có thể loại bỏ chúng trong khi lọc. Chúng ta sẽ thêm đối số Unique thành True để chỉ lấy các giá trị duy nhất và xóa các bản trùng lặp. Làm theo các hướng dẫn được nêu rõ.

Bước 1:
- Đầu tiên, mở VBA Macro bằng cách nhấn Alt + F11.
- Dán mã VBA sau vào Module mới.
Sub Apply_VBA_Advanced_Filter_for_Unique_Values() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet4").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet4").Range("B14:E16") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng, Unique:=True End Sub

Bước 2:
- Sau đó, nhấn F5 để chạy chương trình sau khi lưu.
- Do đó, bạn sẽ chỉ nhận được giá trị cho các bản ghi duy nhất.

Đọc Thêm: Cách Sử Dụng Bộ Lọc Nâng Cao Cho Chỉ Các Bản Ghi Duy Nhất Trong Excel
5. Thực Hiện VBA Advanced Filter Cho Trường Hợp Có Điều Kiện
Ngoài các phương pháp trước, bạn cũng có thể áp dụng điều kiện với công thức. Ví dụ, chúng ta muốn tìm Tổng Giá lớn hơn $100. Để thực hiện điều đó, chỉ cần làm theo các bước.

Bước 1:
- Đầu tiên, để mở VBA Macro, nhấn Alt + F11.
- Chọn Module mới và dán mã VBA sau.
Sub Apply_VBA_Advanced_Filter_for_Formula() 'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=Criteria_Rng End Sub

Bước 2:
- Thứ hai, lưu chương trình và nhấn nút F5 để xem kết quả.
Ghi Chú. Ngoài ra, bạn có thể nhận kết quả trong một không gian thuận lợi dù là trong một phạm vi mới hay trong một trang tính mới bằng cách áp dụng hành động xlFilterCopy. Chỉ cần dán mã VBA và chạy để nhận kết quả trong Sheet6 trong phạm vi B4:E11.
'Declare Variable for dataset range and for criteria range Dim Dataset_Rng As Range Dim Criteria_Rng As Range 'Set the location and range of dataset range and criteria range Set Dataset_Rng = Sheets("Sheet5").Range("B4:E11") Set Criteria_Rng = Sheets("Sheet5").Range("B14:E15") 'Apply Advanced Filter to filter the dataset using the criteria Dataset_Rng.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=Criteria_Rng, CopyToRange:=Sheets("Sheet6").Range("B4:E11") End Sub

- Do đó, xem kết quả cuối cùng trong trang tính mới 'Sheet6'.

Đọc Thêm: Cách Sử Dụng Bộ Lọc Nâng Cao Nếu Phạm Vi Tiêu Chí Chứa Văn Bản Trong Excel
Kết Luận
Tóm lại, tôi hy vọng bạn bây giờ đã hiểu cách sử dụng VBA bộ lọc nâng cao trong Excel để lọc nhiều tiêu chí phạm vi. Tất cả các phương pháp này nên được dùng để dạy và thực hành với dữ liệu của bạn. Xem qua sổ làm việc thực hành và áp dụng những gì bạn đã học. Nhờ sự hỗ trợ quan trọng của bạn, chúng tôi được khích lệ để tiếp tục trình bày các buổi hội thảo như thế này.
Nếu bạn có bất kỳ câu hỏi nào, xin đừng ngần ngại liên hệ với chúng tôi. Vui lòng cho chúng tôi biết ý kiến của bạn trong phần bình luận bên dưới.
Nhân viên Exceldemy sẽ phản hồi các thắc mắc của bạn sớm nhất có thể.
Hãy ở bên chúng tôi và tiếp tục học tập.
Các Bài Viết Liên Quan
- Excel Advanced Filter [Nhiều Cột & Tiêu Chí, Sử Dụng Công Thức & Ký Tự Thay Thế]
- Cách Sử Dụng Bộ Lọc Nâng Cao Để Loại Trừ Ô Trống Trong Excel (3 Mẹo Dễ Dàng)
- Excel VBA: Bộ Lọc Nâng Cao Với Nhiều Tiêu Chí Trong Một Phạm Vi (5 Phương Pháp)
- Cách Áp Dụng Bộ Lọc Nâng Cao Để Sao Chép Sang Vị Trí Khác Trong Excel