VBA Excel Cấp Tốc Bài 1 - Lọc Dữ Liệu Nhiều Điều Kiện Với Advanced Filter

Advanced Filter giúp chúng ta lọc ra những dòng dữ liệu thỏa mãn các điều kiện từ đơn giản tới phức tạp. Advanced Filter trong Excel cung cấp cho chúng ta rất nhiều chức năng lọc nhiều kiểu dữ liệu khác nhau như lọc theo chuỗi, lọc theo số, lọc ngày tháng và có thể xử lý và thỏa mãn rất nhiều tình huống trong công việc.

Video bài học số 1: Lọc dữ liệu VBA Excel

Advanced Filter lọc dữ liệu nhiều điều kiện.

Trước khi đi bắt đầu lọc dữ liệu có điều kiện với Advanced Filter thì bạn nên hiểu một ít  về VBA.

VBA Excel là gì?

VBA là viết tắt của Visual Basic Application, là ứng dụng lập trình cơ bản trong Microsoft Office. Hiểu nôm na thì lập trình VBA trong Excel là việc ta viết các câu lệnh để các thao tác trong Excel được thực hiện tự động. VBA làm được những gì? VBA có thể làm được tất cả các công việc mà Excel làm được Lưu trữ danh sách, lên kế hoạch, phân tích dữ liệu, phát triển các biểu đồ, xây dựng chương trình,...

Bắt đầu thực hành lọc dữ liệu nhiều điều kiện với Advanced Filter.

Bạn cần chuẩn bị sẵn File để thực hành hoặc có thể tải File thực hành tại đây.
Alt + f11 để mở cửa sổ Visual Basic.

mở visual basic

Kích chuột phải vào Sheet 1 -> Insert -> Module -> hiện ra phần để mình viết code.

mở module để viết code

Vì đây là viết code để thực hiện nên sẽ có mở đầu và kết thúc. 
mở đầu code Sub Đặt_tên_cho_code mở ngoặc đóng ngoặc Enter phần kết thúc code tự hiện ra. Xem hình bên dưới để hình dung nhé.

mở đầu kết thúc code

Đầu tiên bạn phải khai báo biến Dim rg as range, rg này chính là vùng dữ liệu của mình. Nên mình đặt luôn Set rs = sheets("Data").Range("B4").currentRegion. Là khi bắt đầu từ B2 nó sẽ tự động bôi đen vùng dữ liệu.
Và khai báo thêm biến Dim criterial_rg as range, rg này chính là vùng điều kiện. Nên cũng đặt luôn Set criterial_rs = sheets("Data").Range("J4").currentRegion
khai báo thêm vùng để chiết xuất dữ liệu Dim copy_rg as range, rg này là vùng chiết xuất dữ liệu. Nên cũng đặt luôn Set copy_rs = sheets("Data").Range("M4"). dữ liệu thỏa điều kiện sẽ được copy ra bắt đầu từ M4.
rg là vùng dữ liệu ta bắt đầu chạy với dòng code là: rg.AdvancedFilter xlFilterCopy, criterial_rg, copy_rg

code điều kiện

Kết quả sau khi lọc thỏa mãn điều kiện.

kết quả lọc có điều kiện

Muốn thay đổi điều kiện lọc hay thêm điều kiện lọc trước hết ta phải xóa kết quả vừa lọc được. Để xóa kết quả vừa lọc được thì ra dùng lệnh: Sheets("Data").Range("M:S").Delete và cho chạy lệnh  chạy lên này trước bằng cách kích vào lệnh và ấn Run.

chạy lệnh xóa

Sau đó ta cho chạy lại lệnh của dữ liệu và Run lần nữa để sau đó bạn có thể thay đổi điều kiện lọc mà không cần phải thực hiện lại bước này.

chạy lện xóa trong excel

kết quả sau khi xóa và thêm điều kiện lọc.

kết quả lọc với hai điều kiện

Tạo Macro.

Tạo Macro để khi chạy chương trình lọc bạn chỉ cần thêm điều kiện và kích vào Macro là chạy được chương trình lọc mà không cần phải mở Visual Basic lên.
Vào thẻ Insert chọn hình trong mục Shapes sau đó giữ chuột trái kéo.

tạo macro

Kích chuột phải vào hình sau đó chọn Assign Macro.

tạo macro trong excel

kích vào tên chương trình lọc bạn tạo lúc đầu sau đó chọn ok.

xong macro

Giờ bạn chỉ cần thêm hay chỉnh sửa điều kiện lọc sau đó kích vào Macro vừa tạo là có thể chạy chương trình lọc.

macro lọc

Đoạn code của lọc dữ liệu có điều kiện với Advanced Filter:

Sub loc_dieu_kien()
Dim rg As Range
Dim criterial_rg As Range
Dim copy_rg As Range

Sheets("Data").Range("M:S").Delete

Set rg = Sheets("Data").Range("B4").CurrentRegion
Set criterial_rg = Sheets("Data").Range("J4").CurrentRegion
Set copy_rg = Sheets("Data").Range("M4")

rg.AdvancedFilter xlFilterCopy, criterial_rg, copy_rg

End Sub

Nếu có thắc mắc hay gặp vấn đề gì cần giúp đỡ bạn hãy để lại bình luận phía bên dưới mình sẽ giải đáp. Cảm ơn bạn đã đọc bài viết, Chúc bạn thực hành tốt.

>> VBA Excel Cấp Tốc Bài 2 - In Bảng Cửu Chương

CHO ĐIỂM BÀI VIẾT NÀY

vote data
TOP