Menu

App script quản lý rủi ro cho cá nhân & doanh nghiệp với báo cáo chuẩn định dạng biểu đồ

Tự động hóa việc tạo báo cáo hàng tháng bằng VBA

Tần Phú Tú 11/03/2026 17:49 95 lượt xem 2 trả lời

Chào các anh chị em trong diễn đàn,

Dạo này công việc của mình liên quan đến việc làm báo cáo hàng tháng, mà đa phần là copy-paste dữ liệu từ nhiều file nguồn rồi tổng hợp lại. Tốn khá nhiều thời gian và dễ sai sót. Mình đang nghiên cứu VBA để tự động hóa phần này.

Hiện tại mình đã làm được việc mở tất cả các file trong một thư mục và copy dữ liệu từ một sheet cố định sang một file tổng hợp. Tuy nhiên, mình đang gặp một chút vướng mắc ở bước lọc và tổng hợp dữ liệu.

Cụ thể, mình muốn sau khi copy dữ liệu thô về file tổng hợp, VBA có thể tự động lọc ra những dòng thỏa mãn một điều kiện nhất định (ví dụ: theo mã khách hàng hoặc theo tháng) và sau đó tính tổng các giá trị tương ứng. Mình đã thử dùng các hàm như SUMIFS nhưng tích hợp vào VBA hơi lúng túng.

Anh em nào có kinh nghiệm xử lý dạng báo cáo tự động này, hoặc có đoạn code mẫu nào có thể tham khảo thì chia sẻ giúp mình với ạ. Mình đang tìm hiểu về vòng lặp For Each...Next và các phương thức lọc dữ liệu như AutoFilter hoặc Advanced Filter. Có cách nào để kết hợp chúng hiệu quả không?

Cảm ơn mọi người đã đọc bài!

3

Chào bạn,

Mình hiểu nỗi khổ của việc làm báo cáo thủ công này lắm, nhất là khi dữ liệu nhiều và nguồn phân tán. Việc bạn đã tự động hóa được bước mở file và copy dữ liệu là rất tốt rồi đó!

Để giải quyết phần lọc và tổng hợp, bạn có thể thử dùng các phương thức như AutoFilter hoặc AdvancedFilter kết hợp với vòng lặp (For Each) để duyệt qua các điều kiện lọc. Sau đó, sử dụng các hàm tính toán như Sum, Count, Average hoặc Application.WorksheetFunction để tổng hợp kết quả.

Bạn có thể chia sẻ rõ hơn về cấu trúc dữ liệu nguồn và tiêu chí lọc/tổng hợp bạn đang muốn áp dụng không? Biết đâu có thể gợi ý được giải pháp cụ thể hơn cho bạn.

3

Chào bạn,

Đọc bài của bạn mình thấy giống hệt mình hồi trước, làm báo cáo hàng tháng mà cứ lặp đi lặp lại việc copy-paste đúng là tốn thời gian thật. Việc bạn đã làm được bước mở file và copy dữ liệu là rất đáng khen rồi đó!

Về phần lọc và tổng hợp, bạn đã nghĩ đến việc sử dụng AutoFilter hoặc AdvancedFilter chưa? Thường thì mình hay kết hợp hai cái này với vòng lặp để xử lý. Sau khi lọc xong, bạn có thể dùng Application.WorksheetFunction.Sum hay các hàm tương tự để tổng hợp.

Để mình gợi ý chính xác hơn, bạn có thể cho mọi người biết thêm về cấu trúc của các file nguồn không? Dữ liệu của bạn được sắp xếp như thế nào và bạn muốn lọc/tổng hợp theo những tiêu chí nào cụ thể không?

4

Bạn cần đăng nhập để trả lời chủ đề này.

Đăng nhập Đăng ký