Chào các anh chị em trong diễn đàn,
Dạo này công việc của mình hay phải làm các báo cáo định kỳ hàng tuần/tháng, mà dữ liệu nguồn thì nằm rải rác ở nhiều file khác nhau, hoặc có cấu trúc hơi lộn xộn. Mỗi lần làm thủ công vừa tốn thời gian, vừa dễ sai sót.
Sau một thời gian mày mò, mình đã tìm ra cách kết hợp Power Query để gom và làm sạch dữ liệu, sau đó dùng một chút VBA để tự động hóa việc chạy báo cáo và xuất ra file mới. Cách này giúp mình tiết kiệm được kha khá thời gian và đảm bảo tính chính xác.
Cụ thể các bước mình thường làm:
- Bước 1: Gom dữ liệu bằng Power Query
- Sử dụng chức năng "Get Data" để kết nối đến các file nguồn (Excel, CSV, Database...).
- Tiến hành các bước Transform (biến đổi) dữ liệu như: thay đổi kiểu dữ liệu, lọc bỏ dòng/cột không cần thiết, chia cột, gộp cột, chuẩn hóa tên trường...
- Quan trọng là tải kết quả ra dạng Connection Only để không tạo bảng tạm trong Excel.
- Bước 2: Xử lý và tổng hợp dữ liệu (nếu cần)
- Nếu cần thêm các phép tính phức tạp, mình có thể tạo thêm các bảng Query khác dựa trên bảng dữ liệu đã làm sạch ở Bước 1.
- Ví dụ: tính tổng theo nhóm, tính tỷ lệ phần trăm...
- Bước 3: Tự động hóa bằng VBA
- Viết một đoạn code VBA đơn giản để:
- Refresh all queries trong Power Query.
- Copy dữ liệu từ các bảng Query đã làm sạch sang một sheet báo cáo mới.
- Định dạng báo cáo (in đậm tiêu đề, kẻ bảng, tạo biểu đồ...).
- Lưu file báo cáo với tên có ngày tháng năm (ví dụ: BaoCao_20231027.xlsx).
- Có thể thiết lập chạy macro tự động khi mở file hoặc theo lịch trình nếu cần.
Mình thấy cách này rất hiệu quả cho những ai thường xuyên phải làm báo cáo từ nhiều nguồn dữ liệu khác nhau. Nếu có anh chị em nào muốn tìm hiểu sâu hơn về phần nào hoặc có cách làm hay hơn, chia sẻ để mọi người cùng học hỏi nhé!
Cảm ơn đã đọc bài!