Tự động lọc của Excel tính năng thực sự hiệu quả để trích xuất dữ liệu dựa trên các điều kiện nhất định. Triển khai VBA là phương pháp hiệu quả nhất, nhanh nhất và an toàn nhất để chạy bất kỳ thao tác nào trong Excel. Trong bài viết này, chúng tôi sẽ chỉ cho bạn 4 phương pháp để Tự động lọc với nhiều tiêu chí trên cùng một trường (cột) trong Excel với macro VBA .
Tải xuống Workbook
Bạn có thể tải xuống sổ làm việc Excel thực hành miễn phí từ đây.
4 phương pháp với VBA để tự động lọc với nhiều tiêu chí trên cùng một trường (cột) trong Excel
Tiếp theo phần này, bạn sẽ tìm hiểu cách Tự động lọc với nhiều văn bản và giá trị số, với toán tử AND và toán tử OR trên cùng một cột trong Excel với VBA theo 4 tiêu chí khác nhau.
1. Nhúng VBA vào bộ lọc tự động với nhiều tiêu chí số trên cùng một cột
Hãy xem xét tập dữ liệu sau. Cột B bao gồm một số Số Ngẫu nhiên , trong khi Cột D chỉ giữ Số lẻ . Những gì chúng tôi sẽ làm ở đây là, chúng tôi sẽ lọc Cột B dựa trên các tiêu chí nằm trong Cột D ; điều đó có nghĩa là Số Ngẫu nhiên ( Cột B ) sẽ được lọc theo Số lẻ với tiêu chí bao gồm và giữa các số nằm trong Cột D .
Hãy xem cách thực hiện điều đó với VBA trong Excel.
Các bước:
- Lúc đầu, nhấn Alt + F11 trên bàn phím của bạn hoặc chuyển đến tab Nhà phát triển -> Visual Basic để mở Visual Basic Editor .
- Tiếp theo, trong cửa sổ mã bật lên, từ thanh trình đơn, nhấp vào Chèn -> Mô-đun .
- Sau đó, sao chép mã sau và dán nó vào cửa sổ mã.
Sub AutoFilterWithMultipleCriteriaOnSameColumn()
Dim iArray As Variant
With ThisWorkbook.Worksheets("Column")
iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
End Sub
Mã của bạn hiện đã sẵn sàng để chạy.
- Bây giờ, nhấn F5 trên bàn phím của bạn hoặc từ thanh trình đơn, chọn Run -> Run Sub / UserForm . Bạn cũng có thể chỉ cần nhấp vào biểu tượng Run nhỏ trong thanh menu phụ để chạy macro.
Sau khi thực thi mã thành công, hãy xem hình ảnh sau để kiểm tra kết quả.
Như bạn có thể thấy từ hình ảnh trên, Cột B hiện được lọc chỉ với số lẻ .
Bạn có thể thực hiện cùng một mã để lọc dữ liệu dựa trên số chẵn . Trong trường hợp đó, bạn chỉ cần lưu trữ các số chẵn trong một cột khác thay vì các số lẻ.
Giải thích mã VBA
Dim iArray As Variant
Xác định biến cho mảng .
With ThisWorkbook.Worksheets("Column")
Khai báo tên trang tính (“ Cột ”Là tên trang tính cho tập dữ liệu của chúng tôi). Bạn phải viết tên trang tính theo tập dữ liệu của mình.
iArray = Split(Join(Application.Transpose(.Range(.Cells(5, 4), .Cells(.Range("D:D").Find(What:="*", LookIn:=xlFormulas, LookAt:=xlPart, SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row, 4)).Value)))
Điền vào mảng đã xác định với tiêu chí được lưu trữ trong Cột D bắt đầu trên Ô D5 .
.Range("B4").AutoFilter Field:=1, Criteria1:=iArray, Operator:=xlFilterValues
End With
- Cột Bộ lọc B bắt đầu trên Ô B4 theo nhiều tiêu chí được lưu trữ trong mảng đã xác định .
- Sau đó, rời đi trang tính .
Đọc thêm: Excel VBA để kiểm tra xem Tự động lọc có được bật hay không (4 cách dễ dàng)
2. Triển khai VBA để tự động lọc bằng Toán tử AND trên cùng một cột trong Excel
xlAND toán tử trong Excel hoạt động với hai tiêu chí. Nó trả về các giá trị đáp ứng cả hai tiêu chí .
Bây giờ, hãy xem xét tập dữ liệu sau. Cột B bao gồm Số Ngẫu nhiên, và chúng tôi đã chèn hai điều kiện trong phạm vi D4:E5 . Các điều kiện là Cột B phải được lọc với các số Lớn hơn hoặc bằng 2 (giá trị được lưu trữ trong Ô E4 ) và Nhỏ hơn hoặc bằng 9 (giá trị được lưu trữ trong Ô E5 ). Chúng tôi sẽ lọc Cột B theo các điều kiện đó với Toán tử AND trong Excel VBA .
Các bước để có được điều đó được đưa ra bên dưới.
Các bước:
- Tương tự như trước đây, mở Visual Basic Editor từ Nhà phát triển và Chèn a Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán nó vào cửa sổ mã.
Sub AutoFilterOnSameColumnWithAND()
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
End Sub
Mã của bạn hiện đã sẵn sàng để chạy.
- Sau đó, Chạy macro như chúng tôi đã cho bạn thấy trong phần trên. Kết quả được hiển thị trong hình ảnh bên dưới.
Sau khi thực thi mã thành công, Cột B được lọc với các giá trị từ 2 đến 9 , đáp ứng cả hai điều kiện.
Giải thích mã VBA
With ThisWorkbook.Worksheets("AND")
.Range("B4").AutoFilter Field:=1, Criteria1:=">=" & .Range("E4").Value, Operator:=xlAnd, Criteria2:="<=" & .Range("E5").Value
End With
Đoạn mã này,
- Đầu tiên khai báo tên trang tính mà chúng tôi sẽ làm việc với (“ VÀ ”Là tên trang tính cho tập dữ liệu của chúng tôi). Bạn phải viết tên trang tính theo tập dữ liệu của mình.
- Sau đó, lọc Cột B bắt đầu trên Ô B4 theo nhiều tiêu chí được lưu trữ trong Ô E4 và E5 với xlAnd toán tử.
- Sau đó, rời đi trang tính .
Đọc thêm: [Khắc phục]:Phương pháp tự động lọc của lớp phạm vi không thành công (5 giải pháp)
3. Áp dụng Macro cho Tự động lọc bằng Toán tử HOẶC trên cùng một cột trong Excel
xlOR toán tử trong Excel hoạt động với hai tiêu chí. Không giống như xlAND , nó trả về các giá trị đáp ứng bất kỳ tiêu chí nào .
Bây giờ, hãy xem xét tập dữ liệu sau. Cột B bao gồm Số Ngẫu nhiên, và chúng tôi đã chèn hai điều kiện trong phạm vi D4:E5 . Các điều kiện là Cột B phải được lọc với các số Lớn hơn hoặc bằng 12 (giá trị được lưu trữ trong Ô E4 ) hoặc Nhỏ hơn hoặc Bằng 7 (giá trị được lưu trữ trong Ô E5 ). Chúng tôi sẽ lọc Cột B theo các điều kiện đó với OR Operator trong Excel VBA .
Hãy xem các bước về cách thực hiện điều đó.
Các bước:
- Như được hiển thị trước đây, hãy mở Visual Basic Editor từ Nhà phát triển và Chèn a Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán nó vào cửa sổ mã.
Sub AutoFilterOnSameColumnWithOR()
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
End Sub
Mã của bạn hiện đã sẵn sàng để chạy.
- Sau đó, Chạy macro và nhìn vào hình ảnh sau để xem kết quả.
Sau khi thực thi mã thành công, Cột B được lọc với các giá trị lớn hơn hoặc bằng 12 hoặc nhỏ hơn hoặc bằng 7 .
Giải thích mã VBA
With ThisWorkbook.Worksheets("OR")
.Range("B4").AutoFilter Field:=1, Criteria1:="<" & .Range("E5").Value, Operator:=xlOr, Criteria2:=">" & .Range("E4").Value
End With
Đoạn mã này,
- Đầu tiên khai báo tên trang tính mà chúng tôi sẽ làm việc với (“ HOẶC ”Là tên trang tính cho tập dữ liệu của chúng tôi). Bạn phải viết tên trang tính theo tập dữ liệu của mình.
- Sau đó, lọc Cột B bắt đầu trên Ô B4 theo nhiều tiêu chí được lưu trữ trong Ô E4 và E5 với xlOr toán tử.
- Sau đó, rời đi trang tính .
Đọc thêm: Cách tự động lọc và sao chép hàng hiển thị bằng Excel VBA
4. Nhúng VBA vào bộ lọc tự động dựa trên nhiều giá trị văn bản trên cùng một trường
Nhìn vào tập dữ liệu sau. Cột B bao gồm Tên quốc gia . Chúng tôi sẽ lọc cột này dựa trên quốc gia mà chúng tôi sẽ mã hóa cứng trong macro. Chúng tôi sẽ Tự động lọc cột dựa trên hai tên quốc gia, Úc và Anh .
Các bước để thực thi được đưa ra bên dưới.
Các bước:
- Đầu tiên, hãy mở Visual Basic Editor từ Nhà phát triển và Chèn a Mô-đun trong cửa sổ mã.
- Sau đó, sao chép mã sau và dán nó vào cửa sổ mã.
Sub AutoFilterOnSameColumnWithMultipleTexts()
Dim iArray As Variant
iArray = Array("Australia", "England")
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
End Sub
Mã của bạn hiện đã sẵn sàng để chạy.
- Tiếp theo, Chạy macro. Bây giờ, hãy nhìn vào hình ảnh sau để biết kết quả.
Do đó, Cột B vốn chứa rất nhiều quốc gia hiện đã được lọc chỉ với hai tên quốc gia - Úc và Anh - mà chúng tôi đã cung cấp trong mã.
Giải thích mã VBA
Dim iArray As Variant
Xác định biến cho mảng .
iArray = Array("Australia", "England")
Cửa hàng tiêu chí văn bản dựa trên đó lọc sẽ được thực hiện trong mảng đã xác định .
Range("B4", Range("B" & Rows.Count).End(xlUp)).AutoFilter 1, iArray, xlFilterValues, , 0
Cột lọc B bắt đầu trên Ô B4 theo tiêu chí nhiều văn bản được mã hóa cứng trong mảng đã xác định .
Đọc thêm: Cách tự động lọc các giá trị không bằng một giá trị nhất định với VBA trong Excel
Kết luận
Để kết thúc, bài viết này đã chỉ cho bạn 4 phương pháp để Tự động lọc với nhiều tiêu chí trên cùng một trường (cột) trong Excel với macro VBA . Tôi hy vọng bài viết này rất hữu ích cho bạn. Vui lòng đặt bất kỳ câu hỏi nào liên quan đến chủ đề này.
Các bài viết liên quan
- Bộ lọc tự động VBA:Sắp xếp Nhỏ nhất đến Lớn nhất (3 Phương pháp)
- Excel VBA:Loại bỏ Bộ lọc Tự động Nếu Nó Tồn tại (7 Ví dụ)