Việc ngược với gộp file cũng lặp lại không kém: cuối tháng bạn có một bảng tổng của cả công ty và cần gửi mỗi chi nhánh đúng phần số liệu của họ, mỗi nhân viên kinh doanh đúng danh sách khách của họ, mỗi đại lý đúng bảng công nợ của họ. Làm tay nghĩa là lọc, chép, dán sang file mới, lưu, đặt tên, rồi lặp lại cho từng nhóm. Với mười hai chi nhánh, đó là gần trăm thao tác mỗi tháng, và chỉ một lần dán nhầm là gửi số của chi nhánh này cho chi nhánh kia.
Gửi nhầm số liệu còn nghiêm trọng hơn gửi thiếu: một đại lý nhìn thấy giá và chiết khấu của đại lý khác là chuyện khó giải thích. Vì vậy tách bảng là việc nên tự động hoá, nhưng phải kèm khâu kiểm. Bài này trình bày ba cách từ đơn giản đến mạnh, cách nhờ AI viết macro tách file, và các bước kiểm trước khi bấm gửi.
Chọn cách nào cho việc của bạn
Ba cách dưới đây không thay thế nhau hoàn toàn. Trước khi bắt tay, trả lời vài câu hỏi để chọn đúng ngay từ đầu, khỏi làm hai lần:
- Kết quả để xem nội bộ hay để gửi ra ngoài? Xem nội bộ thì PivotTable hoặc FILTER là đủ; gửi ra ngoài cần file riêng, sạch, tức là macro hoặc chép tay có kiểm.
- Số nhóm bao nhiêu và có đổi không? Ba bốn nhóm cố định thì FILTER mỗi trang rất gọn; vài chục nhóm, thêm bớt theo tháng thì macro đỡ công hơn nhiều.
- Excel của bạn là bản nào? Không có mảng động thì bỏ qua cách hai; dùng Excel trên trình duyệt thì không chạy được macro VBA.
- Ai sẽ làm việc này khi bạn vắng mặt? Nếu người thay không quen macro, nên có kèm một trang hướng dẫn và một nút bấm có nhãn rõ ràng.
- Dữ liệu nhạy cảm đến mức nào? Lương, công nợ, giá riêng từng đại lý cần thêm khâu kiểm cột và có thể cần đặt mật khẩu cho từng file.
Nhiều nhóm dùng kết hợp: FILTER để quản lý xem nhanh trong file nội bộ hằng ngày, macro để xuất file gửi đi vào cuối tháng. Điều quan trọng là cả hai đọc từ cùng một bảng tổng đã được làm sạch, để con số trong file nội bộ và file gửi đi không bao giờ vênh nhau.
Chuẩn bị bảng tổng trước khi tách
Mọi cách tách đều dựa vào một cột làm khoá chia nhóm, ví dụ cột Chi nhanh, cột Nhan vien phu trach hay cột Ma dai ly. Cột này phải sạch tuyệt đối: cùng một chi nhánh không được ghi lúc "CN Huế", lúc "Huế", lúc "CN Hue". Nếu không, bạn sẽ có ba file cho một chi nhánh và mỗi file thiếu một phần. Trước khi tách, dùng chức năng lọc của Excel để xem danh sách giá trị duy nhất trong cột khoá, sửa hết các biến thể về một cách ghi.
Bảng tổng cũng phải là một bảng liền mạch: một dòng tiêu đề, không có dòng trống chen giữa, không có dòng tổng cộng xen kẽ theo nhóm. Dòng tổng nên tính sau khi tách, trong từng file, hoặc để người nhận tự cộng. Nếu bảng đang có ô gộp ở tiêu đề, bỏ gộp trước, vì cả bộ lọc lẫn macro đều xử lý ô gộp rất kém.
Cuối cùng, xác định cột nào được gửi ra ngoài. Bảng tổng của bạn có thể chứa giá vốn, ghi chú nội bộ, đánh giá khách hàng. Những cột đó phải bị loại trước khi tách, hoặc macro phải được viết để chỉ chép các cột cho phép. Đây là điểm hay bị quên nhất và hậu quả nặng nhất.
Cách một: PivotTable với chức năng tách trang theo bộ lọc
Hợp với ai. Người cần nhanh, không muốn dùng macro, và chấp nhận kết quả là nhiều trang trong cùng một file thay vì nhiều file riêng.
Cách làm. Tạo PivotTable từ bảng tổng, kéo cột khoá chia nhóm vào vùng Filters, kéo các cột cần hiển thị vào vùng Rows và Values. Sau đó trong thẻ PivotTable Analyze, mở Options và chọn Show Report Filter Pages. Excel tự tạo mỗi giá trị trong cột khoá một trang tính riêng, đặt tên trang theo giá trị đó.
Ưu điểm. Không cần viết mã, làm trong một phút, không có nguy cơ xoá dữ liệu gốc.
Hạn chế. Mỗi trang vẫn là một PivotTable chứ không phải bảng dữ liệu thường, nên người nhận có thể thấy hơi lạ; và PivotTable vẫn giữ liên kết tới toàn bộ dữ liệu nguồn trong bộ nhớ đệm, người nhận có thể mở rộng ra xem số của nhóm khác. Vì vậy cách này chỉ dùng để xem nội bộ, đừng gửi trang tách bằng PivotTable ra ngoài. Muốn gửi, phải chép từng trang thành giá trị sang file mới.
Cách hai: hàm FILTER cho từng trang
Hợp với ai. Người dùng Excel bản mới có mảng động hoặc Google Sheets, số nhóm ít và ổn định, cần các trang cập nhật ngay khi bảng tổng thay đổi.
Cách làm. Tạo một trang cho mỗi nhóm, ở ô A1 ghi tên nhóm, ở ô A3 viết công thức FILTER lấy toàn bộ các dòng của bảng tổng có cột khoá bằng ô A1. Ví dụ với bảng tên BangTong, cột khoá ChiNhanh, công thức trên Excel bản tiếng Anh là =FILTER(BangTong, BangTong[ChiNhanh]=A1, "Không có dữ liệu"). Máy cài vùng Việt Nam có thể dùng dấu chấm phẩy thay dấu phẩy giữa các đối số; kiểm lại trên máy bạn.
Ưu điểm. Không cần macro, tự cập nhật, dễ hiểu với người khác.
Hạn chế. Hàm FILTER chỉ có ở Excel bản mới hỗ trợ mảng động (như Microsoft 365, Excel 2021 trở đi) và Google Sheets; Excel 2016, 2019 không có. Kết quả vẫn nằm trong cùng file với bảng tổng, nên cũng không gửi thẳng ra ngoài được. Muốn gửi, phải chép giá trị sang file mới, và đó là lúc cần đến cách ba. Phần viết công thức chi tiết có ở danh mục công thức Excel của trang.
Cách ba: macro VBA tạo mỗi nhóm một file riêng
Khi cần mỗi chi nhánh một file riêng để gửi đi, macro là cách gọn nhất. Đây là mô tả nên đưa cho AI, viết thành các bước mà macro phải làm:
- Đọc trang BangTong, dòng 1 là tiêu đề, cột khoá là cột B tên ChiNhanh.
- Lấy danh sách giá trị duy nhất trong cột B, bỏ qua ô trống.
- Với mỗi giá trị: lọc bảng theo giá trị đó, chép các dòng hiện ra cùng dòng tiêu đề sang một file mới, chỉ chép các cột A đến H, không chép cột I trở đi vì đó là cột nội bộ.
- Lưu file mới dạng .xlsx vào thư mục TachFile nằm cùng chỗ với file đang mở, tên file là tên chi nhánh kèm năm và tháng, thay các ký tự không hợp lệ trong tên file bằng dấu gạch dưới.
- Nếu file cùng tên đã tồn tại thì dừng và báo, không lưu đè.
- Đóng file mới, bỏ lọc ở bảng tổng, cuối cùng hiện thông báo đã tạo bao nhiêu file và mỗi file bao nhiêu dòng.
Mô tả càng chi tiết thì mã càng ít phải sửa. Đặc biệt chú ý hai điểm: chỉ chép các cột cho phép, và không lưu đè file đã có. AI hay viết thêm dòng Application.DisplayAlerts = False để macro chạy êm, nhưng dòng đó tắt luôn câu hỏi "file đã tồn tại, có ghi đè không", nên nếu thấy dòng này, hãy yêu cầu AI kiểm sự tồn tại của file trước khi lưu.
Kiểm kết quả trước khi gửi bất cứ file nào
Tách xong không có nghĩa là gửi được ngay. Bảng kiểm dưới đây nên làm mỗi lần, mất khoảng năm phút nhưng tránh được lỗi gửi nhầm.
| Kiểm cái gì | Cách kiểm | Nếu sai |
|---|---|---|
| Đủ số file | Số file trong thư mục bằng số giá trị duy nhất của cột khoá | Cột khoá có ô trống hoặc giá trị lạ; sửa bảng tổng, xoá thư mục kết quả, chạy lại |
| Đủ số dòng | Tổng số dòng các file cộng lại bằng số dòng bảng tổng | Có dòng rơi vào nhóm lạ hoặc bị bỏ; xem lại cột khoá |
| Đúng người | Mở ngẫu nhiên ba file, kiểm mọi dòng trong file thuộc đúng nhóm ghi trên tên file | Bộ lọc chưa được bỏ giữa hai vòng; báo AI sửa mã |
| Không lộ cột nội bộ | Mở một file, xem đủ các cột, kể cả cột ẩn | Macro chép cả bảng thay vì vùng cho phép; sửa mã trước khi gửi |
| Không còn dữ liệu ẩn | Kiểm file không có trang ẩn, tên vùng hay liên kết về bảng tổng | Tạo file mới hoàn toàn thay vì sao chép cả trang tính |
Đặc biệt chú ý cột ẩn và trang ẩn: nhiều người nghĩ ẩn cột là đủ, nhưng người nhận chỉ cần bỏ ẩn là thấy. Dữ liệu không được phép gửi thì phải không có trong file, không phải bị ẩn đi. Phần gửi file hàng loạt qua email là chuyện nối nhiều ứng dụng; trang AI Kết Nối của cùng hệ viết riêng về cách làm đó.
Chạy lại hằng tháng mà không rối thư mục
Việc tách file lặp lại mỗi tháng, nên ngay từ đầu cần nghĩ tới chuyện tháng sau. Cách đơn giản là mỗi lần chạy, macro tạo một thư mục con mang tên năm và tháng, ví dụ 2026-10, rồi lưu các file vào đó. Thư mục tháng trước giữ nguyên làm hồ sơ, không bị ghi đè, và khi có ai hỏi lại đã gửi số gì cho chi nhánh nào vào tháng nào, bạn mở đúng thư mục là thấy.
Ví dụ giả định: một công ty phân phối ở Nghệ An có mười bốn đại lý, cuối tháng gửi mỗi đại lý bảng công nợ riêng. Tháng đầu chạy macro, thư mục kết quả có mười ba file thay vì mười bốn. Kiểm lại thì một đại lý mới được ghi tên ở cột khoá kèm khoảng trắng thừa và rơi vào nhóm riêng, trong khi một đại lý khác không phát sinh giao dịch trong tháng nên không có dòng nào. Cả hai đều không phải lỗi macro, nhưng chỉ lộ ra nhờ bước đếm file và đếm dòng.
Từ tháng thứ hai, kế toán thêm vào mô tả cho AI một yêu cầu: so danh sách nhóm trong bảng tổng với một danh sách đại lý chuẩn ở trang DanhMuc, báo tên nào có trong danh mục mà không có dữ liệu và tên nào có dữ liệu mà không có trong danh mục. Hai dòng báo này giúp phát hiện sai sót trước khi bất kỳ file nào được gửi đi.
Câu hỏi thường gặp
Có tách được thành nhiều trang trong cùng file mà không dùng macro không?
Có. Dùng PivotTable với chức năng Show Report Filter Pages, hoặc tạo mỗi trang một công thức FILTER nếu Excel của bạn có mảng động. Cả hai không cần macro nhưng kết quả vẫn nằm chung file với dữ liệu gốc.
Tên chi nhánh có dấu tiếng Việt thì tên file có bị lỗi không?
Windows cho phép tên file có dấu, nhưng khi gửi qua một số hệ thống hoặc giải nén trên máy khác có thể bị lỗi phông. An toàn hơn là đặt tên file theo mã chi nhánh không dấu, hoặc yêu cầu macro bỏ dấu khi tạo tên.
Macro tách file chạy mãi không dừng thì làm sao?
Bấm tổ hợp Ctrl+Break hoặc Esc để ngắt macro. Nguyên nhân thường là vòng lặp đọc tới cuối trang tính thay vì dòng cuối có dữ liệu, hoặc cột khoá có hàng nghìn giá trị khác nhau do dữ liệu bẩn. Kiểm lại cột khoá rồi nhờ AI sửa cách tìm dòng cuối.
Có nên đặt mật khẩu cho từng file trước khi gửi không?
Nếu dữ liệu nhạy cảm như lương, công nợ, có thể đặt mật khẩu mở file và gửi mật khẩu qua kênh khác. Macro có thể làm việc này, nhưng nhớ không ghi mật khẩu thẳng trong mã nếu file được chia sẻ cho nhiều người.
Có thể dán bảng tổng vào chatbot để AI tách giúp không?
Không nên với dữ liệu thật, vì bảng tổng thường chứa thông tin khách hàng và số liệu nội bộ. Cách an toàn là nhờ AI viết macro dựa trên mô tả cấu trúc, rồi chạy macro trên máy của bạn. Dữ liệu không cần rời khỏi máy.