Sub loc_dulieu()
Dim lr As Long
lr = Danhsach_KSK.Range("B" & Rows.Count).End(xlUp).Row
With Danhsach_KSK
.Range("A10:BT10").AutoFilter
.Range("A10:BT" & lr).AutoFilter field:=2, Criteria1:=Danhsach_KSK.Cells(4, 7)
Range("A10:BT" & lr).AutoFilter field:=6, Criteria1:=">=" & CLng(Danhsach_KSK.Cells(2, 7).Value), Operator:=xlAnd, Criteria2:="<=" & CLng(Danhsach_KSK.Cells(3, 7).Value)
.Range("A11:BT" & lr).SpecialCells(xlVisible).Copy
.Range("BU11").PasteSpecial Paste:=xlPasteValues, operation:=xlNone, skipblanks:=False, Transpose:=False
.Range("A10:BT10").AutoFilter
End With
End Sub
Trong code trên bạn chú ý 2 vấn đề:
1. Nên dùng biến dòng cuối, thay vì cố định 10.000 dòng thì phạm vi làm việc sẽ nhỏ đi nhiều, giúp code chạy nhanh hơn.
2. Trong code lọc điều kiện ngày, bạn ghi "=<" để biểu diễn nhỏ hơn hoặc bằng là chưa đúng. Viết đúng là "<=" (đúng thứ tự dấu nhỏ hơn viết trước, dấu bằng viết sau).
Ngoài ra để nâng cao thêm kỹ năng lọc nhiều điều kiện, bạn có thể học thêm về kỹ thuật dùng Advanced Filter sẽ nhanh và hiệu quả hơn nhiều so với dùng Filter + copy
https://blog.hocexcel.online/su-dung-...