Menu

Tự động hóa việc tạo báo cáo tổng hợp từ nhiều file Excel bằng VBA

Đồng Thuận Thúy 01/07/2026 17:59 159 lượt xem 1 trả lời

Chào các bác, em đang gặp một vấn đề hơi đau đầu một chút. Công ty em có nhiều chi nhánh và mỗi chi nhánh sẽ xuất một file Excel báo cáo hàng tuần. Giờ sếp yêu cầu em tổng hợp tất cả các file báo cáo này lại thành một file duy nhất để làm báo cáo tổng. Số lượng file báo cáo có thể lên đến vài chục file, mỗi file lại có cấu trúc sheet và cột hơi khác nhau một chút. Làm thủ công thì tốn rất nhiều thời gian và dễ sai sót.

Em có tìm hiểu qua thì thấy VBA có thể giải quyết được vấn đề này. Tuy nhiên, em mới chỉ làm quen với VBA ở mức cơ bản, chủ yếu là tự động hóa các tác vụ đơn giản trên một file. Em chưa có kinh nghiệm xử lý việc đọc dữ liệu từ nhiều file cùng lúc, đặc biệt là khi cấu trúc file nguồn có thể không hoàn toàn giống nhau.

Em muốn hỏi các cao thủ trong diễn đàn mình:

  • Có cách nào để viết một đoạn code VBA có thể tự động mở tất cả các file báo cáo trong một thư mục chỉ định không?
  • Làm sao để trích xuất và gom dữ liệu từ các cột tương ứng trong từng file vào một sheet tổng hợp, ngay cả khi tên cột có thể hơi khác nhau (ví dụ: 'Doanh thu' ở file này, 'Sales' ở file khác)?
  • Có những hàm hay phương thức VBA nào thường được sử dụng cho loại tác vụ này mà em nên tìm hiểu kỹ hơn?

Em rất mong nhận được sự chỉ dẫn và chia sẻ kinh nghiệm từ các anh chị đi trước. Nếu có thể, xin chia sẻ một vài đoạn code mẫu hoặc gợi ý hướng đi thì em xin cảm ơn rất nhiều ạ!

Em xin cảm ơn!

3

Chào bạn,

Vấn đề bạn đang gặp phải khá phổ biến và VBA đúng là giải pháp tối ưu cho việc này. Để tự động hóa việc tổng hợp báo cáo từ nhiều file có cấu trúc hơi khác nhau, mình thường áp dụng cách này:

  1. Sử dụng Application.GetOpenFilename để người dùng chọn các file cần tổng hợp.
  2. Dùng vòng lặp For Each để duyệt qua từng file đã chọn.
  3. Trong mỗi file, xác định sheet chứa dữ liệu (có thể dùng Sheets(1) hoặc tên sheet cố định nếu có).
  4. Copy dữ liệu từ sheet đó sang file tổng hợp. Với trường hợp cấu trúc cột hơi khác, bạn có thể cần thêm logic để ánh xạ hoặc bỏ qua các cột không cần thiết.
  5. Cuối cùng, đóng các file nguồn lại.

Bạn có thể chia sẻ thêm về sự khác biệt cấu trúc giữa các file không? Ví dụ, tên sheet có giống nhau không, hay chỉ là thứ tự các cột bị xáo trộn?

5

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

Đăng nhập Đăng ký