Thiết lập VBA Autofilter ở nhiều cột trong 1 bảng tính?

Liên hệ QC

thanhphuongvip

Mới học VBA, hỏi ngu anh chị đừng chửi ạ
Tham gia
16/1/10
Bài viết
136
Được thích
22
Chào anh em, sau khi tìm hiểu và nhờ sự trợ giúp của anh em trên diễn đàn ở topic trước, đặt biệt là anh leonguyenz, anh Ba Tê,
Mình đã viết đc code autofilter dữ liệu khi gõ từ khóa ở đầu cột (chỗ tô màu)

216727

Bây giờ mình muốn thêm chức năng lọc tương tự ở các cột Tồn đầu và tồn cuối nữa, thì mình viết code như thế nào ạ?
Nghĩa là điều kiện của 3 cột sẽ kết hợp với nhau (nếu như cột nào không gõ từ khóa thì coi như điều kiện đó ko có), giống như mình sài AutoFilter thủ công vậy. Ví dụ muốn tìm mã hàng có chứa ký tự 5025 và có tồn đầu là 50 hẳng hạn.
Từ đó mở rộng thêm 4 cột, 5 cột,... thì càng tốt.
Xin đa tạ!
Bài đã được tự động gộp:
 

File đính kèm

  • VBA Nhap Xuat Ton Rut Trich.xlsm
    256.3 KB · Đọc: 11
Chào anh em, sau khi tìm hiểu và nhờ sự trợ giúp của anh em trên diễn đàn ở topic trước, đặt biệt là anh leonguyenz, anh Ba Tê,
Mình đã viết đc code autofilter dữ liệu khi gõ từ khóa ở đầu cột (chỗ tô màu)

View attachment 216727

Bây giờ mình muốn thêm chức năng lọc tương tự ở các cột Tồn đầu và tồn cuối nữa, thì mình viết code như thế nào ạ?
Nghĩa là điều kiện của 3 cột sẽ kết hợp với nhau (nếu như cột nào không gõ từ khóa thì coi như điều kiện đó ko có), giống như mình sài AutoFilter thủ công vậy. Ví dụ muốn tìm mã hàng có chứa ký tự 5025 và có tồn đầu là 50 hẳng hạn.
Từ đó mở rộng thêm 4 cột, 5 cột,... thì càng tốt.
Xin đa tạ!
Bài đã được tự động gộp:
Lam thế nào để biết lọc gần đung hay là loc chính xác
 
Upvote 0
Chào anh em, sau khi tìm hiểu và nhờ sự trợ giúp của anh em trên diễn đàn ở topic trước, đặt biệt là anh leonguyenz, anh Ba Tê,
Mình đã viết đc code autofilter dữ liệu khi gõ từ khóa ở đầu cột (chỗ tô màu)

View attachment 216727

Bây giờ mình muốn thêm chức năng lọc tương tự ở các cột Tồn đầu và tồn cuối nữa, thì mình viết code như thế nào ạ?
Nghĩa là điều kiện của 3 cột sẽ kết hợp với nhau (nếu như cột nào không gõ từ khóa thì coi như điều kiện đó ko có), giống như mình sài AutoFilter thủ công vậy. Ví dụ muốn tìm mã hàng có chứa ký tự 5025 và có tồn đầu là 50 hẳng hạn.
Từ đó mở rộng thêm 4 cột, 5 cột,... thì càng tốt.
Xin đa tạ!
Bài đã được tự động gộp:
Tham khảo code:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$8" Or Target.Address = "$D$8" Then
    Range("P8") = IIf(Range("C8") = "", "", "*" & Range("C8") & "*")
    Range("P7") = Range("C9"): Range("Q7") = Range("D9"): Range("Q8") = Range("D8")
   
    Range("nhapxuatton").AdvancedFilter _
    Action:=xlFilterInPlace, _
    CriteriaRange:=IIf(Range("P8") = "" And _
        Range("Q8") <> "", Range("Q7:Q8"), IIf(Range("P8") <> "" And _
        Range("Q8") = "", Range("P7:P8"), Range("P7:Q8"))), Unique:=False
   
    Range("P7:Q8").Clear

    If ActiveSheet.FilterMode = True And Range("C8") = "" And Range("D8") = "" Then
        ActiveSheet.ShowAllData
    End If
End If
Application.ScreenUpdating = True
End Sub
P/s: Bỏ 2 dòng lệnh Application.EnableEvents trong file giùm.
 

File đính kèm

  • VBA Nhap Xuat Ton Rut Trich (2).xlsm
    255.3 KB · Đọc: 14
Lần chỉnh sửa cuối:
Upvote 0
Tham khảo code:
Mã:
Private Sub Worksheet_Change(ByVal Target As Range)
Application.ScreenUpdating = False
If Target.Count > 1 Then Exit Sub
If Target.Address = "$C$8" Or Target.Address = "$D$8" Then
    Range("P8") = IIf(Range("C8") = "", "", "*" & Range("C8") & "*")
    Range("P7") = Range("C9"): Range("Q7") = Range("D9"): Range("Q8") = Range("D8")
  
    Range("nhapxuatton").AdvancedFilter _
    Action:=xlFilterInPlace, _
    CriteriaRange:=IIf(Range("P8") = "" And _
        Range("Q8") <> "", Range("Q7:Q8"), IIf(Range("P8") <> "" And _
        Range("Q8") = "", Range("P7:P8"), Range("P7:Q8"))), Unique:=False
  
    Range("P7:Q8").Clear

    If ActiveSheet.FilterMode = True And Range("C8") = "" And Range("D8") = "" Then
        ActiveSheet.ShowAllData
    End If
End If
Application.ScreenUpdating = True
End Sub
P/s: Bỏ 2 dòng lệnh Application.EnableEvents trong file giùm.
Đúng rồi a leonguyenz!
Nếu bỏ 2 dòng Application.EnableEvents thì tốc độ xử lý dữ liệu chậm hẳn, đặt biệt là khi xóa từ khóa để showall Data.
Không biết 2 dòng lệnh này có ý nghĩa là gì, và để vậy luôn có đc ko a leonguyenz?
 
Upvote 0
Đúng rồi a leonguyenz!
Nếu bỏ 2 dòng Application.EnableEvents thì tốc độ xử lý dữ liệu chậm hẳn, đặt biệt là khi xóa từ khóa để showall Data.
Không biết 2 dòng lệnh này có ý nghĩa là gì, và để vậy luôn có đc ko a leonguyenz?
Theo tôi hiểu thì dùng EnableEvents để bắt sự kiện Change 1 lần khi có tham chiếu vòng (thay đổi Target trong sự kiện Change nhiều lần), tránh tạo vòng lặp vô tận.
Cái này bạn search Google tìm hiểu thêm.
 
Upvote 0
Web KT
Back
Top Bottom