Khi làm việc trong Excel bạn thường hay phải lọc, tìm kiếm dữ liệu. Việc này đôi khi khiến bạn mất nhiều thời gian khi phải thao tác thủ công bằng tay. Trong bài viết này, Gitiho sẽ giới thiệu đến các bạn cách tìm kiếm và lọc dữ liệu tự động khi bạn nhập vào một ô trong Excel bằng VBA. Bạn cũng có thể tải file mẫu ở cuối bài viết. Hãy cùng tìm hiểu ngay nào.
Ví dụ, bạn có một danh sách bao gồm các tên như sau:
Có thể thấy danh sách trên có rất nhiều tên khác nhau. Làm thế nào để chúng ta có thể lọc, tìm nhanh hơn cho cột Tên này?
Bạn hãy thực hiện các bước sau đây:
Bước 1: Đầu tiên, bạn cần đưa vùng danh sách tên về dạng Table trong Excel: chọn toàn bộ danh sách => bấm vào thẻ Insert => chọn mục Table.
Bước 2: Khi đó Excle sẽ mở ra hộp thoại Create Table. Bạn hãy chú ý là bảng có chứa dòng tiêu đề hay không, nếu có thì hãy đánh dấu vào mục My table has headers, sau đó bấm OK:
Bước 3: Hãy đặt lại tên cho bảng này trong thẻ Table Tools / Design / Table Name như vị trí hình bên dưới:
Đặt tên bảng là Name, tương ứng với giá trị trong ô B4
Bước 4: Tiếp theo chúng ta sẽ tạo một Textbox bằng cách bấm vào thẻ Developer => Insert => Text Box (ActiveX Control) để chèn hộp văn bản vào phía trên table list:
Sau đó bạn vẽ textbox ra 1 vị trí trên Sheet
Bước 5: Bấm chuột phải vào Text Box => chọn Properties. Trong cửa sổ Properties => nhập vào hộp LinkedCell là 1 ô bất kỳ bên ngoài bảng (ví dụ như ô F4)
Bước 6: Tiếp theo bạn bấm chuột phải vào Text Box => chọn mục View Code. Sau đó bạn hãy thay thế đoạn mã có sẵn bằng mã VBA dưới đây trong cửa sổ Microsoft Visual Basic for Applications:
Private Sub TextBox1_Change()
'Update by Extendoffice 2018/08/22
Dim xStr, xName As String
Dim xWS As Worksheet
Dim xRg As Range
On Error GoTo Err01
Application.ScreenUpdating = False
xName = "Name"
xStr = TextBox1.Text
Set xWS = ActiveSheet
Set xRg = xWS.ListObjects(xName).Range
If xStr <> "" Then
xRg.AutoFilter field:=1, Criteria1:="*" & xStr & "*", Operator:=xlFilterValues
Else
xRg.AutoFilter field:=1, Operator:=xlFilterValues
End If
Err01:
Application.ScreenUpdating = True
End Sub
Lưu ý: Trong đoạn mã này, TextBox1 là tên của hộp văn bản được chèn, Name là tên của danh sách bảng. Bạn có thể thay đổi tên bảng khác theo ý muốn nhưng phải thống nhất về tên bảng với tên trong đoạn code.
Bước 7: Đóng cửa sổ VBA lại.
Bước 8: Tắt chế độ Design Mode bằng cách click vào Developer => Design.
Từ bây giờ, mỗi khi bạn nhập giá trị nào trong Textbox thì tự động danh sách tên sẽ được lọc theo giá trị đó:
Trên đây là những hướng dẫn về cách tìm kiếm và lọc dữ liệu sau khi bạn nhập vào một ô trong Excel. Nếu thấy bài viết hay và hữu ích, các bạn hãy chia sẻ với bạn bè của mình nhé. Chúc các bạn thành công!
CÓ THỂ BẠN CŨNG QUAN TÂM:
Hướng dẫn cách lọc dữ liệu còn gọi là filter trong Excel có bài tập đính kèm
Cách xóa dữ liệu trùng lặp bằng Advanced Filter
Hướng dẫn Excel cơ bản về cách dùng bộ lọc Filter – Phần 1
Hướng dẫn cách dùng bộ lọc Filter trong Excel cơ bản – phần 2
Tài liệu kèm theo bài viết
Khóa học phù hợp với bất kỳ ai đang muốn tìm hiểu lại Excel từ con số 0. Giáo án được Gitiho cùng giảng viên thiết kế phù hợp với công việc thực tế tại doanh nghiệp, bài tập thực hành xuyên suốt khóa kèm đáp án và hướng dẫn giải chi tiết. Tham khảo ngay bên dưới!