Trong nhiều file Excel, dữ liệu thường được chia nhỏ theo tháng, theo khu vực hoặc theo từng nhân viên, mỗi phần là một sheet riêng. Khi cần tổng hợp tất cả vào một bảng duy nhất để báo cáo, thống kê hoặc xử lý, việc sao chép thủ công dễ gây nhầm lẫn, trùng dữ liệu và rất mất thời gian.
Đoạn VBA dưới đây sẽ giúp bạn tự động hóa hoàn toàn quá trình này.
Mỗi khi bạn kích hoạt sheet “Master”, tất cả chỉ diễn ra trong vài giây, hoàn toàn tự động, không cần bấm nút.
- Xóa dữ liệu cũ.
- Lấy toàn bộ dữ liệu từ các sheet khác.
- Dán nối tiếp và kẻ khung gọn gàng.
Dán đoạn mã sau vào mô-đun của sheet “Master” (click chuột phải lên tab “Master” → chọn View Code → dán đoạn mã vào cửa sổ VBA):
Private Sub Worksheet_Activate()
Dim i As Long, T As Variant, sh As Worksheet
Application.ScreenUpdating = False
Me.[A2:D10000].ClearContents
For Each sh In Worksheets
If sh.Name <> "Master" Then
With sh
i = .Cells(.Rows.Count, "A").End(xlUp).Row
If i >= 2 Then
T = .Range("A2:D" & i).Value
i = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row + 1
Me.Cells(i, "A").Resize(UBound(T, 1), UBound(T, 2)).Value = T
End If
End With
End If
Next sh
i = Me.Cells(Me.Rows.Count, "A").End(xlUp).Row
If i >= 1 Then Me.Range("A1:D" & i).Borders.Weight = xlThin
Application.ScreenUpdating = True
End Sub- Worksheet_Activate: code sẽ tự chạy mỗi khi bạn mở hoặc chuyển đến sheet “Master”.
- ClearContents: xóa dữ liệu cũ (từ A2:D10000).
- For Each sh In Worksheets: duyệt qua tất cả sheet trong file, trừ sheet “Master”.
- Đọc dữ liệu dạng mảng (T): giúp tốc độ xử lý nhanh gấp nhiều lần so với copy thủ công.
- Resize & ghi dữ liệu: dán nối tiếp dữ liệu xuống dưới vùng hiện có.
- Kẻ viền bảng (Borders): giúp kết quả trình bày rõ ràng, dễ quan sát.
- Tự động chạy khi kích hoạt sheet “Master” — không cần nhấn nút hoặc chọn menu.
- Tổng hợp nhanh dữ liệu từ nhiều sheet khác nhau.
- Tự động xóa dữ liệu cũ trước khi gộp mới.
- Không bị lỗi khi sheet con trống hoặc có ít dữ liệu.
- Tốc độ cao nhờ sử dụng mảng (Variant Array).
- Tự động kẻ khung sau khi hoàn tất để dữ liệu dễ đọc.
- Có thể mở rộng sang nhiều cột hơn (E, F, G…) chỉ bằng cách sửa phạm vi A2:D.
- Báo cáo tổng hợp doanh số từ nhiều sheet chi nhánh.
- Tổng hợp dữ liệu nhân sự theo tháng về bảng tổng.
- Gộp dữ liệu nhập liệu từ nhiều người dùng trong cùng file Excel.
- Tạo dashboard thống kê tự động cập nhật chỉ bằng một cú nhấp chuột vào sheet “Master”.
- Tiết kiệm thời gian: không cần copy-paste từng sheet thủ công.
- Giảm sai sót: dữ liệu được lấy tự động, không bị bỏ sót.
- Dễ dàng mở rộng: chỉ cần thêm sheet mới, macro sẽ tự nhận diện.
- Giao diện rõ ràng: tự động kẻ viền, dữ liệu gọn gàng như bảng báo cáo chuyên nghiệp.
- Thân thiện người dùng: chỉ cần chuyển sang sheet “Master” là dữ liệu cập nhật tức thì.
Đoạn code VBA trên là một công cụ tự động hóa mạnh mẽ giúp bạn tiết kiệm hàng giờ làm việc thủ công trong Excel.
Chỉ với vài dòng lệnh ngắn gọn, bạn đã có thể biến file Excel thành một hệ thống tổng hợp dữ liệu thông minh – cập nhật tự động, nhanh chóng và chính xác tuyệt đối.