Hàm lọc theo điều kiện

Liên hệ QC

GTK-PM

Thành viên thường trực
Tham gia
10/11/13
Bài viết
313
Được thích
15
Sub TIMKIEM()
' TIMKIEM Macro
Selection.AutoFilter
Range("C12").Select
ActiveSheet.Range("$A$12:$G$2357").AutoFilter Field:=2, Criteria1:=Array(PK36.Cells(2, 2).Value, PK36.Cells(3, 2).Value, PK36.Cells(4, 2), PK36.Cells(5, 2).Value, PK36.Cells(6, 2).Value, PK36.Cells(7, 2).Value, PK36.Cells(7, 2).Value, PK36.Cells(8, 2).Value, PK36.Cells(9, 2).Value, PK36.Cells(10, 2).Value), Operator:=xlFilterValues
End Sub

Em muốn lọc các điều kiện từ B2:B11 của dữ liệu từ hàng B13: B1313 nhờ anh chị sửa giúp em đoạn code trên để tạo bộ lọc theo điều kiện ạ.
 

File đính kèm

  • Book1.xlsm
    213.9 KB · Đọc: 21
Do nhu cầu công việc nên em muốn nhờ anh Ba Tê giúp đỡ tiếp trong bài này ạ!
Trường hợp 1: Lọc dữ liệu của 3 sheet Data 36, Data 69, Data 920, điều kiện tại sheet Sort theo B2:B11 và D2:'D3 đã được giải ạ.
Mong muốn của em là Thêm điều kiện để lọc nữa.
Trường hợp 2: Lọc dữ liệu của 3 sheet Data 36, Data 69, Data 920 điều kiện tại sheet Sort theo B2:B11 và D2:'D3 và nếu có phát sinh điều kiện tại cột F2:F11 thì lọc 3 điều kiện này cùng nhau.
Hoặc nếu điều kiện cột B B2:B11 không có điều kiện thì ta tiếp tục lọc điều kiện cột D2:'D3 và F2:F11 (trong bài này dữ liệu tìm kiếm cột B B2:B11 và F F2:F11 có thể linh động có hoặc không. nhưng cột D từ D2:'D3 luôn có dữ liệu cần tìm kiếm)
Bạn giải thích chỉ bạn hiểu.
Phải giải thích từng trường hợp, và có dữ liệu, yêu cầu cụ thể mới biết. Bây giờ thì cột F sheet Sort "trống hoác" biết bạn sẽ nhập cái gì vào đó.
B2-B11 và F2-F11 có hoặc không thì làm gì?
Cả B2-B11 và F2-F11 đều rỗng thì làm gì?
.........................................
-
 
Upvote 0
Bạn giải thích chỉ bạn hiểu.
Phải giải thích từng trường hợp, và có dữ liệu, yêu cầu cụ thể mới biết. Bây giờ thì cột F sheet Sort "trống hoác" biết bạn sẽ nhập cái gì vào đó.
B2-B11 và F2-F11 có hoặc không thì làm gì?
Cả B2-B11 và F2-F11 đều rỗng thì làm gì?
.........................................
-
Cột F em sẽ nhập tên như: A,B,C,D... làm điều kiện, để lọc dữ liệu cột F từ F2:F5000 của sheet Data36, Data69, Data920 (như anh đã làm file trước điều kiện lọc là B2:B11 và D2:'D3 thì nay thì chỉ thêm điều kiện cột F từ F2:F11 lấy dữ liệu của sheet Data 36, Data69, Data 920 từ F2:F5000.
+ Trường hợp nếu B2:B11 rỗng không có dữ liệu thì lọc điều kiện theo D2:'D3 và F2:F11 tại sheet Sort.
+ Trường hợp nếu B2:B11 và F2:F11 rỗng dữ liệu thì không có kết quả.
Chỉ lọc được khi tại sheet Sort: 2 điều kiện B2:B11 và D2:'D3 cùng nhau hoặc 2 điều kiện D2:'D3 và F2:F11 cùng nhau hay 3 điều kiện B2:B11 D2:'D3 F2:11 cùng nhau nếu không đủ thì không lọc được dữ liệu.
 

File đính kèm

  • Sort - Copy.xlsb
    395.3 KB · Đọc: 2
Lần chỉnh sửa cuối:
Upvote 0
Cột F em sẽ nhập tên như: A,B,C,D... làm điều kiện, để lọc dữ liệu cột F từ F2:F5000 của sheet Data36, Data69, Data920 (như anh đã làm file trước điều kiện lọc là B2:B11 và D2:'D3 thì nay thì chỉ thêm điều kiện cột F từ F2:F11 lấy dữ liệu của sheet Data 36, Data69, Data 920 từ F2:F5000.
+ Trường hợp nếu B2:B11 rỗng không có dữ liệu thì lọc điều kiện theo D2:'D3 và F2:F11 tại sheet Sort.
+ Trường hợp nếu B2:B11 và F2:F11 rỗng dữ liệu thì không có kết quả.
Chỉ lọc được khi tại sheet Sort: 2 điều kiện B2:B11 và D2:'D3 cùng nhau hoặc 2 điều kiện D2:'D3 và F2:F11 cùng nhau hay 3 điều kiện B2:B11 D2:'D3 F2:11 cùng nhau nếu không đủ thì không lọc được dữ liệu.
Rất mong nhận được sự giúp đỡ ạ.
 
Upvote 0
Cột F em sẽ nhập tên như: A,B,C,D... làm điều kiện, để lọc dữ liệu cột F từ F2:F5000 của sheet Data36, Data69, Data920 (như anh đã làm file trước điều kiện lọc là B2:B11 và D2:'D3 thì nay thì chỉ thêm điều kiện cột F từ F2:F11 lấy dữ liệu của sheet Data 36, Data69, Data 920 từ F2:F5000.
+ Trường hợp nếu B2:B11 rỗng không có dữ liệu thì lọc điều kiện theo D2:'D3 và F2:F11 tại sheet Sort.
+ Trường hợp nếu B2:B11 và F2:F11 rỗng dữ liệu thì không có kết quả.
Chỉ lọc được khi tại sheet Sort: 2 điều kiện B2:B11 và D2:'D3 cùng nhau hoặc 2 điều kiện D2:'D3 và F2:F11 cùng nhau hay 3 điều kiện B2:B11 D2:'D3 F2:11 cùng nhau nếu không đủ thì không lọc được dữ liệu.
Có lẽ bạn muốn thế này?
 

File đính kèm

  • Sort - Copy (1).rar
    286.7 KB · Đọc: 11
Upvote 0
Do nhu cầu công việc, cần thêm điều kiện lọc rất mong anh giúp đỡ thêm.
Trong file tại sheet Sort em muốn lọc thêm điều kiện tại cột C1:C2, lọc dữ liệu và có tách từ chuỗi C2:C500 tại sheet Data36, Data69, Data920.
(Tại các sheet Data36, Data69, Data920 có các dạng:
27 6 4.1 -> loại này lọc 2 ký tự đầu​
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /​
101 4 3.4 -> loại này lọc 3 ký tự đầu
Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.​
Cách lọc:





+ Trường hợp nếu B2:B11, F2:F11, D2:'D3 rỗng dữ rỗng không có thì điều kiện phải có là C2:C3 để lọc dữ liệu từ chuỗi C2:C500 tại sheet Data36, Data69, Data 920.
+ Trường hợp nếu B2:B11, F2:F11 rỗng dữ liệu không có mà có điều kiện tại C2:C3, D2:'D3 thì cũng lọc được dữ liệu từ C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data 920.
+ Trường hợp F2:F11 rỗng dữ liệu không có mà có điều kiện tại B2:B11, C2:C3, D2:'D3 thì cũng lọc tương tự trên và lọc được dữ liệu từ B2:B500, C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data920.
 

File đính kèm

  • Sort - Copy (1).xlsb
    295 KB · Đọc: 4
Lần chỉnh sửa cuối:
Upvote 0
Do nhu cầu công việc, cần thêm điều kiện lọc rất mong anh giúp đỡ thêm.
Trong file tại sheet Sort em muốn lọc thêm điều kiện tại cột C1:C2, lọc dữ liệu và có tách từ chuỗi C2:C500 tại sheet Data36, Data69, Data920.
(Tại các sheet Data36, Data69, Data920 có các dạng:
27 6 4.1 -> loại này lọc 2 ký tự đầu​
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /​
101 4 3.4 -> loại này lọc 3 ký tự đầu
Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.​
Cách lọc:






+ Trường hợp nếu B2:B11, F2:F11, D2:'D3 rỗng dữ rỗng không có thì điều kiện phải có là C2:C3 để lọc dữ liệu từ chuỗi C2:C500 tại sheet Data36, Data69, Data 920.
+ Trường hợp nếu B2:B11, F2:F11 rỗng dữ liệu không có mà có điều kiện tại C2:C3, D2:'D3 thì cũng lọc được dữ liệu từ C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data 920.
+ Trường hợp F2:F11 rỗng dữ liệu không có mà có điều kiện tại B2:B11, C2:C3, D2:'D3 thì cũng lọc tương tự trên và lọc được dữ liệu từ B2:B500, C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data920.
Cột C sheet Data36 đâu phải là Number làm sao so sánh?
 
Upvote 0
Mã:
Cột C là các dạng chuỗi:
27 6 4.1 -> loại này lọc 2 ký tự đầu
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /
101 4 3.4 -> loại này lọc 3 ký tự đầu
Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.[/TD]
Cột C trong các Data36, Data 69, Data920 là các dạng chuỗi bên trên, giờ phải tách ra để lấy 2 hay 3 ký tự đầu là số thỏa mãn điều kiện tại C2:C3 của sheet Sort.
 
Upvote 0
Mã:
Cột C là các dạng chuỗi:
27 6 4.1 -> loại này lọc 2 ký tự đầu
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /
101 4 3.4 -> loại này lọc 3 ký tự đầu
Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.[/TD]
Cột C trong các Data36, Data 69, Data920 là các dạng chuỗi bên trên, giờ phải tách ra để lấy 2 hay 3 ký tự đầu là số thỏa mãn điều kiện tại C2:C3 của sheet Sort.
Vẫn còn trường hợp 2 ký tự đến dấu "(" chứ không phải "/", dòng 834 sheet Data36:
44(T1) 3 3.6​
Thường thì viết Code xong lại thêm yêu cầu thì Code càng "lu xu bu" thêm. Bạn kiểm tra lại kết quả xem.
 

File đính kèm

  • Sort - Copy 2.rar
    289.3 KB · Đọc: 5
Upvote 0
Vẫn còn trường hợp 2 ký tự đến dấu "(" chứ không phải "/", dòng 834 sheet Data36:
44(T1) 3 3.6​
Thường thì viết Code xong lại thêm yêu cầu thì Code càng "lu xu bu" thêm. Bạn kiểm tra lại kết quả xem.
Em thấy file đã chạy được theo điều kiện tìm kiếm nhưng phải 3 cột B2:B11, C2:C3, D2:'D3 cùng nhau, hiện tại em muốn anh giúp thêm 2 trường hợp bên dưới để mở rộng tìm kiếm hơn. Cách lọc trên anh đã xử lý xong đoạn em bôi đỏ.
+ Trường hợp nếu B2:B11, F2:F11, D2:'D3 rỗng dữ rỗng không có thì điều kiện phải có là C2:C3 để lọc dữ liệu từ chuỗi C2:C500 tại sheet Data36, Data69, Data 920.
+ Trường hợp nếu B2:B11, F2:F11 rỗng dữ liệu không có mà có điều kiện tại C2:C3, D2:'D3 thì cũng lọc được dữ liệu từ C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data 920.
+ Trường hợp F2:F11 rỗng dữ liệu không có mà có điều kiện tại B2:B11, C2:C3, D2:'D3 thì cũng lọc tương tự trên và lọc được dữ liệu từ B2:B500, C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data920.
 
Lần chỉnh sửa cuối:
Upvote 0
Em thấy file đã chạy được theo điều kiện tìm kiếm nhưng phải 3 cột B2:B11, C2:C3, D2:'D3 cùng nhau, hiện tại em muốn anh giúp thêm 2 trường hợp bên dưới để mở rộng tìm kiếm hơn. Cách lọc trên anh đã xử lý xong đoạn em bôi đỏ.
+ Trường hợp nếu B2:B11, F2:F11, D2:'D3 rỗng dữ rỗng không có thì điều kiện phải có là C2:C3 để lọc dữ liệu từ chuỗi C2:C500 tại sheet Data36, Data69, Data 920.
+ Trường hợp nếu B2:B11, F2:F11 rỗng dữ liệu không có mà có điều kiện tại C2:C3, D2:'D3 thì cũng lọc được dữ liệu từ C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data 920.
+ Trường hợp F2:F11 rỗng dữ liệu không có mà có điều kiện tại B2:B11, C2:C3, D2:'D3 thì cũng lọc tương tự trên và lọc được dữ liệu từ B2:B500, C2:C500, D2:'D500 cùng nhau tại sheet Data36, Data69, Data920.
Cho "tanh bành té bẹ" luôn.
 

File đính kèm

  • Sort - Copy 3.rar
    290.5 KB · Đọc: 5
Upvote 0
Em đã test lại thì bị lỗi thế này rất mong anh sửa giúp ạ.loi.jpg
 

File đính kèm

  • Sort - Copy 3.xlsb
    374.2 KB · Đọc: 3
Upvote 0
Em đã test lại thì bị lỗi thế này rất mong anh sửa giúp ạ.View attachment 230812
Lỗi do kiểu dữ liệu của bạn không đúng quy luật. Ví dụ C20 sheet Data36 là "20T1/30/T2 4 3.5", sau số 20 không phải là dấu cách, không phải là dấu "/", cũng không phải là dấu "(". Công thức của bạn trong cột H sheet Data36 cũng không tìm được.
"Cột C là các dạng chuỗi:
27 6 4.1 -> loại này lọc 2 ký tự đầu
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /
101 4 3.4 -> loại này lọc 3 ký tự đầu

Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.[/TD]"
 

File đính kèm

  • Sort - Copy 4.rar
    384.5 KB · Đọc: 9
Upvote 0
Lỗi do kiểu dữ liệu của bạn không đúng quy luật. Ví dụ C20 sheet Data36 là "20T1/30/T2 4 3.5", sau số 20 không phải là dấu cách, không phải là dấu "/", cũng không phải là dấu "(". Công thức của bạn trong cột H sheet Data36 cũng không tìm được.
"Cột C là các dạng chuỗi:
27 6 4.1 -> loại này lọc 2 ký tự đầu
47/50 4 3.6/5.1 -> loại này cũng lọc 2 ký tự đầu bỏ dấu /
101 4 3.4 -> loại này lọc 3 ký tự đầu

Chuỗi chỉ bắt đầu từ 2 ký tự và không quá 3 ký tự lọc là số, không có số thập phân.[/TD]"
Tuyệt vời anh ạ.
 
Upvote 0
Web KT
Back
Top Bottom