Nếu nhắc đến công cụ tìm kiếm trong Excel, chắc hẳn bạn sẽ nghĩ ngay đến Find & Replace (Ctrl + F và Ctrl + H) hay như AutoFilter. Tuy vậy, các công cụ này có một nhược điểm đó là bạn sẽ tốn thời gian thao tác mở nó lên mỗi khi sử dụng. Bài viết hôm nay sẽ giới thiệu đến bạn cách tạo công cụ tìm kiếm trên Excel bằng VBA vô cùng hiệu quả, linh hoạt và nhanh chóng hơn nhiều. Cùng theo dõi nhé!
Cách tạo công cụ tìm kiếm nhanh trong Excel bằng VBA
Đặt vấn đề
Trong công việc, bạn đã không ít lần cần phải tìm ra cái gì đó trong kho dữ liệu hỗn lộn của mình. Lấy ví dụ ở đây là bạn đang có danh sách nhà cung cấp & khách hàng với hơn 870 dòng dữ liệu, để thực hiện tìm tên một đối tượng nào đó bạn có thể tiến hành như cách thông thường, là mở hộp thoại Find & Replace (Ctrl + F) lên và thao tác tìm kiếm hay là bạn có thể sử dụng chức năng lọc. Tuy vậy, thao tác này sẽ khá mất thời gian.
Cách 1: Ứng dụng Chức năng AutoFilter kết hợp với VBA.
Với phương pháp này, bạn sẽ dùng AutoFilter mà Excel hỗ trợ để tạo tìm kiếm.
Khi bạn tiến hành nhập dữ liệu vào trong ô C3 và ấn Enter, rồi tiếp đó chạy Code sau thì VBA sẽ giúp bạn lọc ra các dữ liệu ở cột TEN_DT với điều kiện các TEN_DT này phải chứa giá trị trong ô C3.
VD: Khi bạn thực hiện gõ chữ CỔ PHẦN vào ô C3, tiếp đó chạy Code thì VBA sẽ lọc ra các TEN_DT có chứa chữ CỔ PHẦN đó và trả về kết quả lọc, bạn có thể quan sát kết quả ở hình bên dưới.
Cách 2: Sử dụng VBA kết hợp với ẩn dòng.
Với cách thứ 2, bạn sẽ thực hiện ẩn đi các dòng mà không chứa chuỗi ta cần tìm. Bạn thực hiện một vòng lặp chạy qua cột TEN_DT và tiến hành tìm kiếm xem chuỗi mà bạn nhập vào trong ô C3 có chứa hay không, nếu như không tìm thấy (tức dòng If…..trong Code là đúng) thì bạn sẽ ẩn dòng đó đi. Sau khi vòng lặp chạy xong thì còn lại các dòng không bị ẩn (tức các dòng này có chứa chuỗi mà bạn nhập vào trong ô C3). Hãy nhớ rằng trước khi chạy vòng lặp bạn cần phải bỏ ẩn toàn bộ dữ liệu đã nhé!
Để mỗi khi bạn tiến hành thay đổi giá trị tại ô C3 thì kết quả tìm kiếm sẽ lấy ra ngay tức thì, tại Sheet2 bạn tạo 1 sự kiện Wordksheet_change như hình sau:
Xem thêm: Cách làm danh mục bảng trong Word đơn giản, nhanh chóng