Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Chia sẻ cách lọc dữ liệu theo nhiều điều kiện trong VBA

Đoàn Thanh Duy 28/03/2026 19:05 495 lượt xem 1 trả lời

Chào mọi người, mình là thành viên mới của diễn đàn. Hôm nay mình muốn chia sẻ một đoạn code VBA nhỏ mà mình tự viết để lọc dữ liệu theo nhiều điều kiện. Cái này rất hữu ích khi mình cần xử lý các bảng dữ liệu lớn mà các hàm lọc thông thường của Excel không đáp ứng hết được.

Trong công việc, đôi khi mình cần lọc ra những dòng thỏa mãn đồng thời nhiều tiêu chí khác nhau, ví dụ: lọc tất cả các đơn hàng trong tháng 1, của khu vực 'Miền Bắc', với trạng thái 'Đã giao'. Làm thủ công thì rất mất thời gian, mà dùng các hàm Excel cũng hơi phức tạp.

Với VBA, mình có thể viết một Sub đơn giản để làm việc này. Dưới đây là một ví dụ minh họa:

Sub LocDuLieuNhieuDieuKien()
    Dim wsData As Worksheet
    Dim wsFilter As Worksheet
    Dim rngData As Range
    Dim lastRow As Long

    Set wsData = ThisWorkbook.Sheets("DuLieuGoc") 'Sheet chứa dữ liệu gốc
    Set wsFilter = ThisWorkbook.Sheets("KetQuaLoc") 'Sheet để hiển thị kết quả

    ' Xóa dữ liệu cũ trên sheet kết quả
    wsFilter.Cells.ClearContents

    ' Xác định vùng dữ liệu
    lastRow = wsData.Cells(Rows.Count, "A").End(xlUp).Row
    Set rngData = wsData.Range("A1:F" & lastRow) 'Giả sử dữ liệu từ cột A đến F

    ' Áp dụng AutoFilter
    rngData.AutoFilter Field:=1, Criteria1:="*Miền Bắc*" 'Lọc theo cột 1 (Khu vực)
    rngData.AutoFilter Field:=3, Criteria1:="*Đã giao*" 'Lọc theo cột 3 (Trạng thái)
    ' Thêm các điều kiện lọc khác nếu cần

    ' Copy dữ liệu đã lọc sang sheet kết quả
    rngData.SpecialCells(xlCellTypeVisible).Copy Destination:=wsFilter.Range("A1")

    ' Tắt bộ lọc
    wsData.AutoFilterMode = False

    MsgBox "Đã lọc xong dữ liệu!", vbInformation
End Sub

Giải thích nhanh:

  • Đoạn code này sẽ lọc trên sheet "DuLieuGoc" dựa trên 2 điều kiện: cột "Khu vực" chứa "Miền Bắc" và cột "Trạng thái" chứa "Đã giao".
  • Kết quả sẽ được copy sang sheet "KetQuaLoc".
  • Bạn có thể dễ dàng thay đổi tên sheet, phạm vi dữ liệu và các điều kiện lọc cho phù hợp với nhu cầu của mình.

Hy vọng chia sẻ này hữu ích cho các bạn. Nếu có cách nào hay hơn hoặc gặp khó khăn gì, mọi người cùng thảo luận nhé!

2

Chào bạn, cảm ơn bạn đã chia sẻ đoạn code VBA hữu ích này! Việc lọc dữ liệu theo nhiều điều kiện bằng VBA thực sự rất mạnh mẽ, nhất là với các file Excel dung lượng lớn. Bạn có thể chia sẻ thêm về cách bạn xử lý trường hợp có nhiều hơn 3 điều kiện không? Mình tò mò không biết code của bạn có linh hoạt với số lượng điều kiện thay đổi không.

1

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký