L
Chào các bạn,Tôi thấy các bạn thường hay hỏi về VBA như:
_Làm thế nào để lọc dữ liệu từ một sheet này qua sheet kia?
_Làm thế nào để từ bảng chi tiết đưa ra bảng tổng hợp?
_Làm thế nào để tạo một bảng báo cáo tháng?
Vâng, và có rất nhiều các công việc đại loại như thế! Thế nên tôi muốn xin giới thiệu các bạn một nguyên tắc chung (có thể nói như vậy!) để thực hiện các yêu cầu trên.
Các bạn thấy đấy, các yêu cầu trên có chung một việc là: từ một "bảng chi tiết" ta đưa ra "một bảng tổng hợp".
Để đưa ra bảng tổng hợp chúng ta phải quét qua bảng chi tiết, lọc đưa qua bảng tổng hợp. Sau đó định dạng bảng báo cáo. Tóm lại các bạn có 3 công việc để làm như tôi đã nói ở trên.
_Việc quét dữ liệu: các bạn phải dùng vòng lập. Các bạn nên dùng vòng lập For Next nếu dữ liệu các bạn là một khối và đã được đặt tên.
_Việc lọc dữ liệu: Khi quét qua khối dữ liệu thì tùy theo yêu cầu đặt ra các bạn kiểm tra dữ liệu với yêu cầu đề ra và đưa dữ liệu qua vùng báo cáo.
Bước này tương đối dễ.
_Định dạng báo cáo: bước này dữ liệu (ví dụ như các hàng báo cáo đến đâu, Có bao nhiêu cột báo cáo,...) thì thường dựa vào bước 2 ở trên.
Chú ý: để cho các thao tác trên được nhanh, các bạn phải dùng các kỹ thuật tăng tốc như các thủ thuật đã được giới thiệu trên trang web này.
Application.ScreenUpdate=False
Application.Calculation=...
Đối với một bảng dữ liệu việc quét dứ liệu khối dữ liệu dựa vào một cột thì chúng ta có thể dùng
sKiemTra=Application.Worksheets("Test").cells(i,3)
Do White Len(Trim(sKiemTra))>0
'Các thao tác xuất dữ liệu sẽ đặt ở đây
i=i+1
sKiemTra=Application.Worksheets("Test").cells(i,3)
Loop
Sau đó công việc định dạng thông thường dựa vào biến i ở trên để xác định số hàng cần định dạng. Còn cột định dạng thông thường tùy theo loại báo các chúng ta đã biết cụ thể.
Vâng, đó là các bước chúng ta thường làm trong các thao tác trích lọc dữ liệu để tạo báo cáo.
Hy vọng bài viết này sẽ giúp một phần nào cho các bạn. Tôi hy vọng rằng nếu có dịp tôi sẽ đưa ra một bài cụ thể giống như bạn levanduyet đã đưa ra.
LVL
_Làm thế nào để lọc dữ liệu từ một sheet này qua sheet kia?
_Làm thế nào để từ bảng chi tiết đưa ra bảng tổng hợp?
_Làm thế nào để tạo một bảng báo cáo tháng?
Vâng, và có rất nhiều các công việc đại loại như thế! Thế nên tôi muốn xin giới thiệu các bạn một nguyên tắc chung (có thể nói như vậy!) để thực hiện các yêu cầu trên.
Các bạn thấy đấy, các yêu cầu trên có chung một việc là: từ một "bảng chi tiết" ta đưa ra "một bảng tổng hợp".
Để đưa ra bảng tổng hợp chúng ta phải quét qua bảng chi tiết, lọc đưa qua bảng tổng hợp. Sau đó định dạng bảng báo cáo. Tóm lại các bạn có 3 công việc để làm như tôi đã nói ở trên.
_Việc quét dữ liệu: các bạn phải dùng vòng lập. Các bạn nên dùng vòng lập For Next nếu dữ liệu các bạn là một khối và đã được đặt tên.
_Việc lọc dữ liệu: Khi quét qua khối dữ liệu thì tùy theo yêu cầu đặt ra các bạn kiểm tra dữ liệu với yêu cầu đề ra và đưa dữ liệu qua vùng báo cáo.
Bước này tương đối dễ.
_Định dạng báo cáo: bước này dữ liệu (ví dụ như các hàng báo cáo đến đâu, Có bao nhiêu cột báo cáo,...) thì thường dựa vào bước 2 ở trên.
Chú ý: để cho các thao tác trên được nhanh, các bạn phải dùng các kỹ thuật tăng tốc như các thủ thuật đã được giới thiệu trên trang web này.
Application.ScreenUpdate=False
Application.Calculation=...
Đối với một bảng dữ liệu việc quét dứ liệu khối dữ liệu dựa vào một cột thì chúng ta có thể dùng
sKiemTra=Application.Worksheets("Test").cells(i,3)
Do White Len(Trim(sKiemTra))>0
'Các thao tác xuất dữ liệu sẽ đặt ở đây
i=i+1
sKiemTra=Application.Worksheets("Test").cells(i,3)
Loop
Sau đó công việc định dạng thông thường dựa vào biến i ở trên để xác định số hàng cần định dạng. Còn cột định dạng thông thường tùy theo loại báo các chúng ta đã biết cụ thể.
Vâng, đó là các bước chúng ta thường làm trong các thao tác trích lọc dữ liệu để tạo báo cáo.
Hy vọng bài viết này sẽ giúp một phần nào cho các bạn. Tôi hy vọng rằng nếu có dịp tôi sẽ đưa ra một bài cụ thể giống như bạn levanduyet đã đưa ra.
LVL