Mảng bộ lọc VBA

Các Chức năng lọc VBA cho phép bạn nhanh chóng lọc các mảng. Có một số cài đặt cần xem xét khi lọc mảng. Chúng tôi sẽ thảo luận về chúng dưới đây.

Bộ lọc - Đối sánh

Theo mặc định, Chức năng Bộ lọc VBA sẽ lọc một mảng cho các kết quả phù hợp. Trong ví dụ dưới đây, chúng tôi sẽ lọc mảng để tìm các kết quả phù hợp với “Smith”.

1234567891011121314 Sub Filter_Match ()'Xác định mảngDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Mảng lọcDim strSubNames As VariantstrSubNames = Bộ lọc (strNames, "Smith")'Đếm mảng đã lọcMsgBox "Đã tìm thấy" & UBound (strSubNames) - LBound (strSubNames) + 1 & "tên."Kết thúc Sub

Một vài điểm quan trọng:

  • Biến mảng đã lọc phải được khai báo là biến thể kiểu dữ liệu để tránh xác định kích thước mảng.
  • Theo mặc định, chức năng Bộ lọc có phân biệt chữ hoa chữ thường. Vì vậy, lọc trên “smith” sẽ cho kết quả khác với “Smith”. Dưới đây chúng tôi sẽ hướng dẫn bạn cách thay đổi cài đặt này.

Bộ lọc - Không phân biệt chữ hoa chữ thường

Theo mặc định, VBA là Phân biệt chữ hoa chữ thường. Điều này có nghĩa là “smith” không bằng “Smith”. Điều này đúng với Hàm bộ lọc, cũng như tất cả (hầu hết?) Các hàm hoặc so sánh VBA khác.

Cá nhân tôi không bao giờ muốn VBA phân biệt chữ hoa chữ thường, vì vậy tôi luôn thêm Văn bản tùy chọn so sánh vào đầu tất cả các mô-đun mã của mình. Tùy chọn So sánh Văn bản yêu cầu VBA bỏ qua chữ hoa chữ thường để nó Không phân biệt chữ hoa chữ thường:

1 Tùy chọn So sánh Văn bản

Thêm Văn bản So sánh Tùy chọn vào đầu mô-đun của bạn sẽ làm cho Hàm Bộ lọc không phân biệt chữ hoa chữ thường. Ngoài ra, bạn có thể cho biết chính Hàm bộ lọc không phân biệt chữ hoa chữ thường với đối số vbTextCompare:

1 strSubNames = Bộ lọc (strNames, "smith",, vbTextCompare)

Ví dụ đầy đủ:

1234567891011121314 Sub Filter_MatchCase ()'Xác định mảngDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Mảng lọcDim strSubNames As VariantstrSubNames = Bộ lọc (strNames, "smith",, vbTextCompare)'Đếm mảng đã lọcMsgBox "Đã tìm thấy" & UBound (strSubNames) - LBound (strSubNames) + 1 & "tên."Kết thúc Sub

Bộ lọc - Không phù hợp

Chức năng Bộ lọc cũng có thể được sử dụng để xác định các mục mảng ĐỪNG khớp với các tiêu chí đã nhập bằng cách đặt đối số Bao gồm thành FALSE:

1 strSubNames = Bộ lọc (strNames, "Smith", False)

Ví dụ đầy đủ:

1234567891011121314 Sub Filter_NoMatch ()'Xác định mảngDim strNames As VariantstrNames = Array ("Steve Smith", "Shannon Smith", "Ryan Johnson")'Mảng lọcDim strSubNames As VariantstrSubNames = Bộ lọc (strNames, "Smith", False)'Đếm mảng đã lọcMsgBox "Đã tìm thấy" & UBound (strSubNames) - LBound (strSubNames) + 1 & "tên."Kết thúc Sub

Chức năng lọc

Hàm Bộ lọc VBA trả về một tập hợp con Mảng của một mảng chuỗi được cung cấp.

Cú pháp của hàm bộ lọc là:

Bộ lọc (SourceArray, Match, [Bao gồm], [So sánh])

Các đối số của hàm là:

  • SourceArray - Mảng ban đầu để lọc
  • Trận đấu - Chuỗi tìm kiếm
  • [Bao gồm] - KHÔNG BẮT BUỘC TRUE (Trả về các kết quả phù hợp), FALSE (Trả về các phần tử không khớp)
  • [Đối chiếu] - KHÔNG BẮT BUỘC vbBinaryCompare - so sánh nhị phân, vbTextCompare - so sánh văn bản, vbDatabaseCompare - so sánh cơ sở dữ liệu

Bạn sẽ giúp sự phát triển của trang web, chia sẻ trang web với bạn bè

wave wave wave wave wave