Thứ nhất bạn chọn vùng advance filter không có nhãn (tên field/tên cột)
Thứ hai, điều kiện lọc của bạn chỉ để Range("B2"), excel tự hiểu là range("B2") của sheet hiện tại bạn đang mở. Vậy nếu bạn đang đứng ở sheet100 và chạy sub này thì sao??
Thứ ba, copytorange của bạn đến mình còn không hiểu nói chi máy. (("C5:H5")==> địa chỉ này làm sao tìm ra).
Tốt nhất bạn nên bật record macro lên làm các động tác advance filter rồi đọc lại thì sẽ hiểu liến.
Nhưng trước đó chúng ta nên chỉnh sửa lại CSDL đi cái đã;
1*/ Mình cho rằng nên bỏ số thứ tự của các cột, làm ơn đi;
Vì sao ư?, Vì AdvFilter mà ta sắp xài không xa bao nhiêu đến các hàm của CSDL; Chúng khuyên chúng ta là tên trường nên viết liền nhau 1 cách liên tục; dưới ngay tên trường là CSDL; Hơn nữa đây chưa phải là báo cáo, phần trang trí này chưa cần thiết; Ngược lại sẽ là trung tâm tạo ra lỗi mà có lúc chúng ta không lường trước sđược;
2*/ Có những người nhiều kinh nghiệm làm việc với AdvFilter & càc hàm CSDL thì vùng Criteria nên nằm phía trên CSDL hay trên cùng bên phải CSDL & cách CSDL tối thiểu 1 hàng/cột tương ứng;
Phần kết quả kết xuất ra nên nằm bên phải; Để chúng ta quan sát chuyện đúng sai, trước khi đem nó đi nơi khác, VD đến Form báo cáo của chúng ta. Và chính ở đây, chúng ta tiến hành bôi son trát phấn cho BC thêm màu mè (Nhằm lấy lòng với những ai cần xem BC í mà!); Còn phần CSDL cố gắng đừng cho ai đụng vô càng tốt.