Sử dụng Excel và VBA, tôi muốn có một số lời khuyên về cách lọc dữ liệu tốt nhất trong một mảng (theo cùng cách mà người ta có thể sử dụng bảng tổng hợp) sử dụng VBA. Tôi đang tạo một UserForm sẽ đưa ra một số quyết định dữ liệu dựa trên dữ liệu hiện có. Tôi có thể hình dung làm thế nào để làm điều đó đủ tốt nhưng không phải là thông thạo trong lập trình VBA.Lọc các mảng 2D trong Excel VBA
Dưới đây là một ví dụ
A B C
bob 12 Small
sam 16 Large
sally 1346 Large
sam 13 Small
sally 65 Medium
bob 1 Medium
Để lấy các dữ liệu trong một mảng, tôi có thể sử dụng
Dim my_array As Variant
my_array = Range("A1").CurrentRegion
Bây giờ, tôi làm quen với Looping qua mảng 2D, nhưng tôi tự hỏi: gì cách hiệu quả nhất để lọc dữ liệu mảng 2D (không lặp qua thời gian mảng và lần nữa)?
Ví dụ, làm thế nào để tôi nhận được sẽ nói được loại dữ liệu này:
data_for_sally As Variant 'rows with sally as name in ColA
data_for_sally_less_than_ten As Variant ' all rows with sally's name in ColA and colB < 10
data_for_all_mediums as Variant ' all rows where ColC is Medium
Gợi ý? Tôi có thể làm việc này với một loạt các chức năng tùy chỉnh và vòng lặp nhưng tôi nghĩ rằng phải có một cách tốt hơn. Cảm ơn.
Lưu ý rằng ví dụ thứ 4 không phải là một bộ lọc nhưng một hoạt động trên mảng, có thể dẫn đến một câu trả lời khác. – assylias
Không chắc chắn nó có thể không có chức năng lặp/tùy chỉnh trong VBA. Bạn nói rằng bạn có kinh nghiệm trong các ngôn ngữ khác, có bạn coi là một VSTO/.NET impementation sau đó sử dụng LINQ? –
Đối với loại điều này trong VBA tôi sẽ sử dụng một recordset ADO bị ngắt kết nối. Nó cho phép bạn phân loại và lọc. –