Như Quỳnh Văn Vũ
Như Quỳnh Văn Vũ
Thảo luận 0 thảo luận
Vỗ tay 0 vỗ tay
Lượt xem 3079 lượt xem

Hướng dẫn tìm kiếm và lọc dữ liệu tự động bằng Textbox trong Excel VBA

Nov 12 2020

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.

Lọc, tìm kiếm dữ liệu tự động bằng Textbox

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!

Cuối cùng, đừng quên tham khảo khóa học EXG01 - Tuyệt đỉnh Excel - Trở thành bậc thầy Excel trong 16 giờ của Gitiho bạn nhé! Hẹn gặp lại các bạn trong những bài viết tiếp theo. 

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

Cùng tham gia cộng đồng hỏi đáp về chủ đề VBA

Thảo luận 0 câu trả lời
Lượt xem 3079 lượt xem
Vỗ tay vỗ tay

0 Bình luận

@ 2020 - Bản quyền của Công ty cổ phần công nghệ giáo dục Gitiho Việt Nam
Giấy chứng nhận Đăng ký doanh nghiệp số: 0109077145, cấp bởi Sở kế hoạch và đầu tư TP. Hà Nội