Hướng dẫn cách sử dụng Autofilter giữa các khoảng thời gian trong VBA

Việc sử dụng AutoFilter với điều kiện là ngày tháng trong VBA có thể khiến bạn gặp một số khó khăn. Nó xuất phát bởi quy ước về cách thể hiện giá trị thời gian khác nhau:

  • Người Việt Nam thường dùng quy ước ngày tháng theo kiểu “Ngày-Tháng-Năm”, đây là hệ ngày tháng kiểu Pháp
  • VBA dùng mặc định quy ước ngày tháng theo kiểu “Tháng-Ngày-Năm”, đây là kiểu Anh-Mỹ

Do đó trong một số trường hợp sử dụng AutoFilter với điều kiện liên quan tới ngày tháng, Excel VBA sẽ hiểu sai về điều kiện chúng ta sử dụng trong câu lệnh AutoFilter, dẫn tới kết quả không như chúng ta mong muốn.

Ví dụ về lỗi thường gặp với AutoFilter với dữ liệu ngày tháng:

* Dòng lệnh được tạo bởi chức năng Record Macro như sau:

Nhưng khi chạy lại đoạn Macro trên thì sẽ không thu được kết quả:

Để khắc phục lỗi này chúng ta làm như sau:

Bước 1: Đưa dữ liệu cần lọc vào 1 vị trí nhất định, gán biến cho vị trí ngày là dạng dữ liệu ‘Long’

  • Đặt 2 giá trị Từ ngày vào ô C1, Đến ngày vào ô D1
  • Gán 2 biến Từ ngày và Đến ngày liên kết tới nội dung ở ô C1, D1.

Bước 2: Lọc theo điều kiện ngày tháng đã được gán theo biến

Điều kiện lọc gồm 2 điều kiện:

  • Điều kiện 1 là >= Từ ngày
  • Điều kiện 2 là <= Đến ngày

Chúng ta có thể xem kết quả như sau:

 

* Lưu ý: loại dữ liệu của biến phải là loại dữ liệu kiểu số. Đây là kiểu dữ liệu mặc định của dữ liệu ngày tháng, do đó AutoFilter của Excel sẽ luôn hoạt động đúng cho dù loại ngày là dạng “dd/mm/yyyy” hay là dạng “mm/dd/yyyy”

Với dữ liệu dạng ngày đơn lẻ (chỉ 1 ngày) có thể dùng 2 cách:

  • Cách 1: Dùng duy nhất 1 điều kiện bằng với ngày được chọn
  • Cách 2: Dùng 2 điều kiện ngày:

Điều kiện 1 >= Ngày được chọn

Điều kiện 2 <= Ngày được chọn

Dón xem các bài học tiếp theo tại blog.hocexcel.online

Chúc các bạn học tốt cùng Học Excel Online