Computer >> Hướng Dẫn Máy Tính >  >> Phần Mềm >> Office

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Chúng ta thường sử dụng Bộ lọc (Filters) trong Microsoft Excel khi cần tách dữ liệu cụ thể từ khối lượng lớn. Bộ lọc nâng cao (Advanced Filter) cung cấp thêm các tính năng mở rộng. Excel VBA cũng hỗ trợ tùy chọn bộ lọc nâng cao này. Bài viết sẽ minh họa 6 ví dụ về Excel VBA với các tiêu chí bộ lọc nâng cao.

6 Ví dụ về Excel VBA Advanced Filter với tiêu chí

Phần dưới đây trình bày 6 ví dụ về tiêu chí bộ lọc nâng cao trong Excel VBA.

Chúng ta sẽ sử dụng tập dữ liệu sau cho các ví dụ:

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Ví dụ 1: Excel VBA lọc dữ liệu tại vị trí hiện tại (Filter in Place)

Áp dụng VBA Macro để lọc dữ liệu dựa trên tiêu chí và giữ kết quả lọc tại vị trí ban đầu.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Trong phạm vi B16:E17, chúng ta thiết lập tiêu chí lọc.

Bước 1:

  • Vào tab Developer.
  • Chọn Record Macro trên Ribbon.
  • Đặt tên cho Macro trong hộp thoại xuất hiện và nhấn OK.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Nhấn Macros trên Ribbon.
  • Chọn Macro vừa tạo và nhấn Step Into.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 3:

  • Sao chép mã VBA dưới đây vào Module code:
Sub Filter_Criteria()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterInPlace, criteria
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 4:

  • Nhấn phím F5 để chạy mã.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Tiêu chí được đặt để chỉ hiển thị doanh số của cửa hàng Chicago, kết quả như hình.

Dữ liệu và tiêu chí nằm trên cùng một sheet.

Đọc thêm: Cách áp dụng Advanced Filter để sao chép sang vị trí khác trong Excel

Ví dụ 2: Excel VBA Advanced Filter khi dữ liệu và tiêu chí nằm trên Sheet khác nhau

Ví dụ này minh họa cách xử lý khi tiêu chí và dữ liệu nằm trên các sheet riêng biệt.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Dữ liệu nằm trên sheet tên Criteria_Different_Sheet, tiêu chí trên sheet Criteria.

Bước 1:

  • Nhấn Alt+F11 để mở cửa sổ Module.
  • Dán mã dưới vào Module:
Sub Filter_Criteria_2()
    Dim data As Range
    Dim criteria As Range
    Set data = Sheets("Criteria_Different_Sheet").Range("B4:E14")
    Set criteria = Sheets("Criteria").Range("B4:E5")
    data.AdvancedFilter xlFilterInPlace, criteria
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Nhấn F5 để chạy mã.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Cách này cho phép lọc dữ liệu khi tiêu chí nằm trên sheet khác.

Đọc thêm: Áp dụng Advanced Filter dựa trên nhiều tiêu chí trong một cột trong Excel

Ví dụ 3: Excel VBA lọc dữ liệu và dán vào vị trí khác trên cùng Sheet

Nếu muốn dán kết quả lọc vào vị trí khác, hãy làm theo các bước sau:

Bước 1:

  • Nhấn Alt+F11 để vào Module.
  • Viết mã sau vào Module:
Sub Filter_Criteria_3()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter Action:=xlFilterCopy, CriteriaRange:=criteria, CopyToRange:=Range("G4:J14")
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Nhấn F5 để chạy mã.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Kết quả lọc được dán vào vị trí mới. Tham số CopyToRange chỉ định vị trí dán dữ liệu.

Nội dung liên quan: Cách dùng Advanced Filter sao chép dữ liệu sang Sheet khác trong Excel

Đọc tương tự:

  • Excel VBA: Advanced Filter với nhiều tiêu chí trong phạm vi (5 phương pháp)
  • Cách dùng Advanced Filter loại bỏ ô trống trong Excel (3 mẹo dễ dàng)
  • Excel Advanced Filter [Nhiều cột & tiêu chí, dùng công thức & Wildcards]

Ví dụ 4: Chỉ lọc dữ liệu duy nhất (Unique) bằng Excel VBA

Advanced Filter VBA có thể lấy dữ liệu duy nhất. Chỉ lần xuất hiện đầu tiên được giữ lại, các lần trùng lặp sau đó bị loại bỏ.

Bước 1:

  • Nhấn Alt+F11 để vào Module.
  • Dán mã sau vào Module:
Sub Filter_Criteria_4()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterInPlace, criteria, , True
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Chạy mã bằng phím F5.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Ô màu xanh là lần xuất hiện đầu tiên, ô màu vàng là lần thứ hai. Sau khi chạy mã, ô vàng bị loại bỏ.

Đọc thêm: Cách dùng Advanced Filter cho các bản ghi duy nhất trong Excel

Ví dụ 5: Lọc và xóa trùng lặp không cần tiêu chí trong Excel VBA

Có thể xóa trùng lặp mà không cần thiết lập tiêu chí. Xem các bước dưới:

Bước 1:

  • Vào Module VBA bằng Alt+F11.
  • Sao chép và dán mã sau vào Module:
Sub Filter_Criteria_5()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    data.AdvancedFilter xlFilterInPlace, , , True
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Nhấn F5 để chạy mã.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Nhìn tập dữ liệu. Các giá trị trùng lặp được đánh dấu. Sau khi áp dụng mã, chỉ lần xuất hiện đầu tiên còn lại, các lần sau bị xóa.

Đọc thêm: Excel Advanced Filter không hoạt động (2 nguyên nhân & giải pháp)

Ví dụ 6: Sử dụng toán tử trong tiêu chí để lọc dữ liệu

Có thể dùng toán tử trong tiêu chí để lọc dữ liệu. Thực hiện các bước sau:

Bước 1:

  • Nhấn Alt+F11 vào Module.
  • Dán mã dưới vào Module:
Sub Filter_Criteria_7()
    Dim data As Range
    Dim criteria As Range
    Set data = Range("B4:E14")
    Set criteria = Range("B16:E17")
    data.AdvancedFilter xlFilterCopy, criteria, Range("G4:J14")
End Sub

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Bước 2:

  • Nhấn F5 để chạy mã.

Làm chủ Excel VBA: 6 Kỹ thuật Advanced Filter nâng cao để phân đoạn dữ liệu chính xác

Kết quả trả về các giá trị lớn hơn $1.00.

Đọc thêm: Cách dùng Advanced Filter trong VBA (Hướng dẫn từng bước)

Lưu ý quan trọng

  • Mỗi cột dữ liệu phải có tiêu đề duy nhất.
  • Không được có hàng trống trong tập dữ liệu.

Kết luận

Bài viết đã trình bày 6 ví dụ về tiêu chí Advanced Filter trong Excel VBA. Hy vọng đáp ứng nhu cầu của bạn. Hãy truy cập website Exceldemy.com và để lại góp ý trong khung bình luận.

Các bài viết liên quan

  • Advanced Filter với nhiều tiêu chí trong Excel (15 ví dụ phù hợp)
  • Dynamic Advanced Filter Excel (VBA & Macro)
  • Advanced Filter với Criteria Range trong Excel (18 ứng dụng)
  • Cách dùng Advanced Filter nếu Criteria Range chứa văn bản trong Excel
  • Excel Advanced Filter: Áp dụng "Không chứa" (2 phương pháp)