Bạn có thể hình dung trường hợp này như sau:
- Về phương pháp hoạt động: advanced filter sẽ cần có vị trí trích xuất kết quả (vùng Copy to). vùng này bắt buộc phải có dòng tiêu đề => nếu gán dòng tiêu đề vào dòng cuối + 1 rồi chạy advanced filter thì sẽ thừa dòng tiêu đề mới thêm vào => kết quả này chưa đúng (nếu bạn làm trực tiếp)
- Cách làm gián tiếp (thường dùng, nhưng sẽ phức tạp hơn): đó là bạn tạo 1 vùng nháp, vùng đó sẽ trích xuất kết quả advanced filter. Trong vùng nháp này bạn sẽ:
+ Có dòng tiêu đề làm nơi trích xuất kết quả (vùng copy to, ví dụ là dòng 1, từ cột A tới cột F)
+ Chạy lệnh advanced filter => có kết quả
+ Tìm dòng cuối của vùng kết quả thu được bởi advanced filter (ví dụ tìm được dòng 200)
=> Khi đó bạn sẽ có vùng A2:F200 chính là nội dung thu được bởi advanced filter trong vùng nháp.
=> Sao chép vùng này vào vị trí dòng cuối + 1 tại bảng dữ liệu (cách làm giống như sao chép từ 1 vùng sang 1 vùng).
Yêu cầu:
+ Xác định phạm vi vùng cho dữ liệu: KhoangCach = dongcuoi_AdF - dongTieuDe_AdF 'Lay dong 200 - dong tieu de
+ Nơi cho dữ liệu: bangNhap.Range("A2:F" & dongcuoi_AdF)
+ Xác định phạm vi vùng nhận dữ liệu: BangDuLieu.Range("A" & dongcuoi_DuLieu + 1 & ":F" & dongcuoi_DuLieu + KhoangCach)
=> Nơi nhận.Value = Nơi cho.Value
Bạn phát triển code theo hướng dẫn trên nhé.