Lọc dữ liệu theo điều kiện

Liên hệ QC

saobekhonglac

Thành viên mới
Tham gia
1/11/08
Bài viết
1,565
Được thích
1,454
Giới tính
Nam
Chào anh/chị.

Nhờ anh/chị tạo giúp em code VBA sau cho khi mình gõ tên gân đúng vào cột C1 và bấm nút Tìm thì sẽ liệt kê những KH có tên gần đúng với C1 (dựa vào C2àC336). Sau đó nếu muốn tìm tên khác thì sẽ gõ vào ô C1 và bấm nút tìm thì sẽ liệu sẽ liệt kê theo tên mới (liệt kê từ cột A đến H).
Ví dụ gõ NGUYEN VAN vào C1 và bấm nút sẽ liệt kê dữ liệu theo file đính kèm.
Cám ơn anh/chị.
 

File đính kèm

Anh làm giúp em. Cám ơn.

Tìm gần đúng & lọc tại chỗ thì dùng Advanced Filter. Advanced Fiter (kể cả làm = code hoặc = tay) thì cần có cái tiêu đề (Title) cho nó.
Mà ngay cái dòng tiêu đề bạn lại chơi gõ chữ vào đó...thì làm sao mà cố định được cái tiêu đề cơ chứ.

Bài của bạn có thể dùng 1 cái TextBox để làm điều kiện làm Advacned Fiter. Gõ chữ gì thì nó tự động tìm gần đúng & tức thời...Nếu bạn muốn làm theo cách tôi vừa nói thì Up lại cái file rõ Tiêu đề cho cột C đi rồi làm cho bạn...
 

File đính kèm

Em dùng code này
Sub Filter() Range("A1:H5000").AutoFilter 3, [J1].Value
End Sub

Nhưng khi fillter thì phải gõ từ gần đúng vào J1 và đánh dấu * thì nó mới hiểu. Anh sửa giúp em không cần gõ * mà nó vẫn hiểu được không anh.

Tôi trả lời tại Post #2 cho bạn rồi đó...chờ bạn lâu quá nên Edit & post file. Tên tiêu đề là CustName
 
Cái của anh làm thì ok rồi nhưng dữ liệu khoảng 20.000 dòng thì nó chạy rất lâu, với lại khi nhập vào C1 thì phải xóa dữ liệu cũ mới đánh dữ liệu mới được nên em làm vậy cho nhanh, dấu & "*" chỉ áp dụng được trường hợp dấu * đằng sau, Nếu dấu sau đằng trước nó không hiểu.
Ví dụ có 2 tên NGUYEN VAN A & VAN A T; mà J1 bấm VAN A nó chỉ hiểu VAN A T, còn NGUYEN VAN A nó không fillter ra được.

Mã:
Sub Filter()
Range("A1:H5000").AutoFilter 3, "*" & [J1].Value & "*"
End Sub

Cơ mà tôi làm ở trên rồi mà...
 
Lần chỉnh sửa cuối:
Nếu được anh làm giúp em luôn đi, bữa em có gửi 1 bài tìm tương tự như vậy, dùng công thức mãng cũng được nhưng nó hơi châm, có lúc fillter không ra
=IFERROR(INDEX(MSKH!$A$2:$F$9532,LARGE(--(IF($C$2="",1,ISNUMBER(FIND(Check!$C$2,MSKH!$C$2:$C$9532))))*ROW(MSKH!$C$2:$C$9532)*IF($D$2="",1,--(ISNUMBER(FIND(Check!$D$2,MSKH!$D$2:$D$9532))))*IF($F$2="",1,--(ISNUMBER(FIND(Check!$F$2,MSKH!$F$2:$F$9532)))),ROW(INDIRECT("1:"&COUNTA(MSKH!$C$2:$C$9532))))-1,COLUMN($A$3:$F$3)),"")

Vậy Tại sao không làm 1 sheet Khác. Lọc ra dán kết quả vào đó....Tương tự như tôi làm tại #2. Nhưng không dùng Advanced Filter mà dùng mảng...đảm bảo nhẹ hơn 1000 lần... Có muốn làm không???
 
Web KT

Bài viết mới nhất

Back
Top Bottom