Pin It

VBA – AutoFilter Lọc dữ liệu tự động

Share Button

Một số thao tác khi sử dụng tính năng auto Filter trong VBA. Để minh họa cho các ví dụ ta sử dụng dữ liệu mẫu như sau. Vùng dữ liệu từ ô A1 đến D10 với các trường thông tin: Tên, Tuổi, Ngày đăng ký, Phòng ban.

  1. Bật chế độ lọc dữ liệu

    Cấu trúc: Vùng dữ liệu.AutoFilter.
    Như ví dụ ta sử dụng lọc dữ liệu cho vùng (“A1:D10”). Chú ý nếu vùng dữ liệu đang lọc dữ liệu nếu ta dùng autofilter thì vùng dữ liệu sẽ bị bỏ autofilter.

    Range("A1:D10").AutoFilter
  2.  Lọc dữ liệu với một điều kiện

    Cấu trúc:Vùng dữ liệu.AutoFilter Field:= Cột, Criteria1:=Điều kiện
    Ví dụ muốn lọc cột tuổi (ở vị trí thứ 2) có điều kiện >= 35 ta có thể sử dụng lệnh sau:

    Range("A1:D10").AutoFilter Field:=2, Criteria1:=">= 35"
  3. Lọc dữ liệu với 2 điều kiện trong cùng một cột

    Cấu trúc: Vùng dữ liệu.AutoFilter Field:= Cột ,Criteria1:=Điều kiện1,Operator:= phép toán (and , or) , Criteria1:=Điều kiện2
    Ví dụ muốn lọc cột tuổi có điều kiện là tuổi >=35 và <= 45 ta có thể sử dụng lệnh sau:

    Range("A1:D10").AutoFilter Field:=2, Criteria1:=">= 35", Operator:=xlAnd, Criteria2:="<=45"
    
    
  4. Lọc dữ liệu với 2 điều kiện ở hai cột

    Với điều kiện lọc ở hai cột khác nhau ta chỉ cần thực hiện lệnh lọc 2 lần.
    Ví dụ lọc dữ liệu gồm những người lớn hơn 35 tuổi và ở phòng Kế toán ta có thể làm như sau:

    Range("A1:D10").AutoFilter Field:=2, Criteria1:=">= 35"
    Range("A1:D10").AutoFilter Field:=4, Criteria1:="Kế toán"
  5. Sử dụng ký hiệu đặc biệt
    Trong điều kiện lọc ta có thể dùng dấu ? để đại diện thay thế cho 1 ký tự hoặc * đại diện cho nhiều ký tự.
    Ví dụ muốn tìm người có tên kết thúc là Anh có thể sử dụng Criteria1:=”*Anh”.
    Ví dụ tìm những người có tên Đức, Đạt nhưng không tìm người có tển Đông ta sử dụng Criteria1:=”Đ??” tức là sau chữ Đ chỉ có 2 ký tự.
  6. Lọc theo điều kiện ngày tháng

    Khi lọc theo ngày tháng ta cần nhớ khi so sánh viết theo thứ tự tháng/ngày/năm.
    Ví dụ lọc những người đăng ký sau ngày 20/01/2017

    Range("A1:D10").AutoFilter Field:=3, Criteria1:=">01/20/2017"
Share Button

Comments

comments