Tăng tốc file lớn
Cách giữ workbook Excel chạy nhanh khi dùng DVDAddin với dữ liệu lớn — trên 10,000 dòng, nhiều UDF, hàng trăm sheet.
Đo lường trước khi tối ưu
Công cụ
| Công cụ | Dùng để |
|---|---|
| Windows Task Manager | Xem RAM và CPU của EXCEL.EXE khi mở file hoặc khi tính lại |
| Process Explorer | Công cụ của sysinternals.com — chi tiết hơn Task Manager (Working Set, Private Bytes, số handle) |
| Sysinternals Process Monitor | Theo dõi đọc/ghi file khi nghi ổ đĩa hoặc phần mềm diệt virus quét file là chỗ gây chậm |
Đồng hồ bấm giờ + F9 | Cách đơn giản nhất: chuyển sang chế độ tính thủ công (Manual), bấm F9, đếm giây |
| Báo cáo giai đoạn của In hàng loạt | Có sẵn trong add-in — xem phần dưới |
Lấy mốc đo
Trước khi tối ưu, hãy đo lấy mốc:
- Đóng mọi ứng dụng khác.
- Mở workbook → ghi lại thời gian mở.
- Bấm
F9để tính lại → ghi thời gian. Muốn tính lại toàn bộ, kể cả các ô Excel đã lưu sẵn kết quả:Ctrl + Alt + Shift + F9. - Lưu file → ghi thời gian.
Tối ưu xong → đo lại → so sánh. Phải đo trên cùng một máy, cùng một file, không mở ứng dụng khác thì số đo mới có ý nghĩa.
10 nguyên nhân thường gặp khiến workbook chậm
#1 — Quá nhiều ô dùng UDF
UDF của add-in chạy chậm hơn hàm có sẵn của Excel, và Excel không tính UDF song song trên nhiều luồng (xem Tính đa luồng).
Dấu hiệu: Workbook có hàng nghìn ô =dvd...(...) → tính lại rất lâu.
Cách xử lý:
- Chuyển kết quả UDF thành giá trị tĩnh (Ctrl+C → Paste Special → Values).
- Hoặc dùng lệnh trên ribbon thay cho UDF. Ví dụ, thay vì 1000 ô
=dvdTranslate(...), chọn vùng rồi chạy Dịch ngôn ngữ một lần — kết quả ghi thẳng vào ô, không còn công thức nào phải tính lại.
#2 — Hàm luôn tính lại (volatile)
Hàm volatile bị Excel tính lại mỗi khi có BẤT KỲ ô nào thay đổi, kể cả ô không liên quan.
DVDAddin có 3 hàm khai báo volatile:
| Hàm | Ghi chú |
|---|---|
dvdAutoHide | Ẩn/hiện dòng theo điều kiện — phải volatile mới bám kịp dữ liệu |
dvdSumVisible | Tổng các ô đang hiển thị — ẩn/hiện dòng không sinh sự kiện tính lại nên phải volatile |
dvdMVLookup | Trả nhiều kết quả — cột kết quả nằm lệch so với cột dò nên Excel không tự theo dõi được; vẫn chỉ ghi outputRange khi kết quả đổi |
Từ 07/10/2026, dvdMCLookup và dvdUniqueV không còn là hàm volatile: chúng tính lại khi chính vùng đối số thay đổi.
Hàm volatile có sẵn của Excel: NOW(), TODAY(), RAND(), OFFSET(), INDIRECT().
Dấu hiệu: Sửa 1 ô ở sheet khác → thanh trạng thái hiện "Calculating (XX%)" rất lâu.
Cách xử lý:
- Thay
OFFSET(A1,1,0,10,1)bằng vùng cố địnhA2:A11. - Thay
INDIRECT("Sheet1!"&A1)bằng CHOOSE hoặc nhiều IF lồng nhau. - Chỉ đặt
NOW()ở đúng 1 ô, các ô khác tham chiếu tới ô đó. - Với 3 hàm volatile của DVDAddin ở bảng trên: chỉ dùng ở vài chục ô, đừng rải xuống 5000 dòng.
#3 — VLOOKUP toàn cột
=VLOOKUP(A1, BangGia!A:Z, 8, FALSE) — với mỗi ô, Excel quét toàn bộ cột A của sheet BangGia.
Cách xử lý:
- Đổi sang vùng cố định:
=VLOOKUP(A1, BangGia!$A$2:$Z$1000, 8, FALSE). - Hoặc dùng
INDEX/MATCH. - Hoặc chuyển BangGia thành Excel Table (Ctrl+T) → tham chiếu theo tên cột.
#4 — Định dạng có điều kiện dùng công thức
Mỗi quy tắc định dạng có điều kiện (Conditional Formatting) dùng công thức sẽ được tính cho từng ô trong vùng áp dụng, ở mỗi lần tính lại.
Dấu hiệu: Workbook có 50+ quy tắc định dạng có điều kiện, áp trên các vùng lớn.
Cách xử lý:
- Gom vùng — thay 100 quy tắc trên 100 ô riêng lẻ bằng 1 quy tắc trên cả vùng.
- Đơn giản hoá công thức — dùng kiểu so sánh giá trị ô (Cell Value) thay cho công thức phức tạp.
- Tạm bỏ định dạng có điều kiện: Home → Conditional Formatting → Clear Rules (chỉ làm tạm thời để dò lỗi).
#5 — Ràng buộc nhập liệu (Data Validation) phức tạp
Ô có Data Validation kiểu =COUNTIF(...) = 0 → tính lại mỗi khi giá trị thay đổi.
Cách xử lý: Đơn giản hoá danh sách. Dùng vùng đặt tên (Named Range) tĩnh thay cho vùng động.
#6 — Quá nhiều ảnh / shape
Workbook nhúng nhiều ảnh → tốn nhiều bộ nhớ, hiển thị bị giật.
Dấu hiệu: File .xlsx nặng hơn 50MB dù chữ trong ô không nhiều.
Cách xử lý:
- Chỉnh cỡ ảnh trước khi nhúng — hạ độ phân giải hàng loạt.
- Dùng Comment ảnh thay vì nhúng thẳng vào ô.
- Lưu dạng
.xlsb(Excel nhị phân) — xem Giảm dung lượng file.
#7 — PivotTable quá lớn
PivotTable lấy nguồn từ 100k+ dòng → tính lại rất lâu.
Cách xử lý:
- Dùng Excel Table làm nguồn (nhanh hơn vùng ô thường).
- PivotTable → Options → Data → tắt "Refresh data when opening file" (làm mới thủ công).
- Dùng Data Model + Power Pivot cho dữ liệu rất lớn.
#8 — File chia sẻ qua mạng
File mở thẳng từ ổ mạng (\\server\share\file.xlsx) → lần lưu nào cũng chậm.
Cách xử lý:
- Chép về máy → sửa → đưa lại lên ổ mạng.
- Hoặc dùng OneDrive đồng bộ (file nằm trên máy, đồng bộ chạy ngầm).
#9 — Nhiều liên kết tới file khác
='[OtherFile.xlsx]Sheet'!A1 → mỗi lần tính lại, Excel phải đọc file kia.
Dấu hiệu: File mở chậm và hiện thông báo "Update External References".
Cách xử lý:
- Data → Edit Links → Break Link → công thức chuyển thành giá trị tĩnh.
- Hoặc gom số liệu cần dùng thành một bảng chốt số ngay trong file, cập nhật thủ công theo đợt.
#10 — Xung đột với add-in khác
PowerPivot, Solver, Analysis ToolPak, add-in của phần mềm diệt virus, DVDAddin — add-in nào cũng cộng thêm vào thời gian khởi động Excel.
Cách xử lý: Tắt add-in không dùng (File → Options → Add-ins → Manage → Go → bỏ tick).
Tinh chỉnh riêng cho DVDAddin
Tắt tự động tính / tự động vẽ khi đang nhập tiến độ
Tab DVD Cons có hai công tắc ảnh hưởng trực tiếp tới tốc độ nhập liệu:
- Tự động tính — bật thì mỗi lần đổi ô là add-in tính lại ngày tháng cho bảng tiến độ.
- Tự động vẽ — bật thì sau mỗi lần tính lại, Gantt được vẽ lại.
Khi nhập một loạt vài trăm công tác, tắt cả hai, nhập xong rồi bật lại (hoặc chạy Vẽ tiến độ một lần). Đây là khác biệt lớn nhất giữa "nhập mượt" và "nhập giật" trên bảng tiến độ lớn.
Chuyển Excel sang chế độ tính thủ công
Chế độ mặc định: Auto — Excel tính lại mỗi khi có ô thay đổi.
Workbook có nhiều UDF thì nên chuyển sang Manual:
- File → Options → Formulas → Calculation options → Manual.
- Bấm
F9để tính lại khi cần.
→ Sửa dữ liệu không còn kéo theo hàng nghìn lượt tính lại.
Hàm mạng: cái nào chặn Excel, cái nào không
Đây là điểm hay bị hiểu nhầm — không phải hàm mạng nào cũng chạy ngầm:
| Hàm | Cách chạy | Hệ quả |
|---|---|---|
dvdTranslate | Đồng bộ, chờ tối đa 15 giây | Excel đứng chờ từng ô một. 100 ô mà mạng chậm thì Excel treo rất lâu |
dvdStock | Đồng bộ, chờ tối đa 15 giây | Như trên |
DVDFx | Bất đồng bộ, lưu tạm 1 giờ trên đĩa | Ô hiện #N/A một lát rồi tự có giá trị; không chặn Excel |
dvdAIExplain | Bất đồng bộ | Như trên |
Từ đó:
- Đừng rải
dvdTranslatexuống cả cột. Dùng lệnh Dịch ngôn ngữ cho vùng lớn, chỉ giữ UDF ở vài ô cần tự cập nhật. DVDFxlưu tạm kết quả theo bộ ba (đổi từ, đổi sang, ngày) trong%LocalAppData%\DVDAddin\fx_cache.json, mỗi kết quả giữ 1 giờ — 500 ô cùng cặpUSD→VNDchỉ tốn đúng 1 lần gọi mạng.=DVDFx(A1,B1)vớiA1 = B1trả về1.0ngay, không gọi mạng.
Đo được bằng chính công cụ của add-in
Nếu nghi chậm ở khâu in/xuất, đừng đoán — In hàng loạt in ra bảng phân tích thời gian ở cuối mỗi lần chạy (xem ngay dưới).
Tốc độ In hàng loạt
In hàng loạt chạy N vòng lặp; cuối lượt, add-in hiện báo cáo thời gian theo từng giai đoạn kèm phần trăm — nhìn vào là biết chỗ nào gây chậm:
⏱ Tổng: 45.12s
• Ghi driver cell: 1.23s (3%)
• Calculate: 8.45s (19%)
• AutoFilter: 0.12s (0%)
• Resolve+Select sheet: 2.34s (5%)
• Auto-fit merge: 4.56s (10%)
↳ Pass1 baseline: 1.10s (2%)
↳ Pass2 per-merge: 2.90s (6%) (318 merge)
↳ Pass3 apply: 0.56s (1%)
• Export PDF|In: 28.40s (63%)
• Gộp PDF (PdfSharp): 0.50s (1%)Ba dòng ↳ Pass... chỉ hiện khi bạn bật tùy chọn tự canh chiều cao ô gộp. Dòng Gộp PDF chỉ hiện khi có tick gộp PDF thành một file.
Cách đọc báo cáo:
- Calculate > 30% → bảng có công thức nặng. Bớt UDF, bớt hàm volatile, bớt công thức mảng trong các sheet được in.
- Auto-fit merge > 20% → đang canh chiều cao cho quá nhiều vùng. Vùng cần canh được khai ở cột C của sheet
Mucluc(dòng 5–104, tra theo tên sheet ở cột B) — hãy thu hẹp lại, chỉ giữ những vùng thật sự cần. - Export PDF|In ~60-70% → bình thường. Đây là phần Excel tự xuất file, add-in không tối ưu thêm được.
- Ghi driver cell / Resolve+Select cao bất thường → workbook có quá nhiều sheet, hoặc tên sheet trong Sheet-print cell đang trỏ lộn xộn.
Ngoài ra, với vòng lặp dài, đừng gõ vào ô nào trong lúc lệnh đang chạy — Excel đang bận, thao tác của bạn sẽ xung đột với add-in.
Mức chiếm bộ nhớ
Phát hiện
Dùng Process Explorer (bộ sysinternals):
- Thêm hai cột "Working Set" và "Private Bytes".
- Theo dõi
EXCEL.EXEtheo thời gian.
Bộ nhớ tăng dần và không giảm sau khi đóng workbook → nghi có đối tượng COM không được giải phóng, từ một macro hoặc add-in nào đó.
Khoanh vùng
Tắt mọi add-in → mở file → đo bộ nhớ → bật lại từng add-in một → tìm add-in làm bộ nhớ phình ra.
Nếu khoanh được nguyên nhân về DVDAddin, hãy gửi kèm file (hoặc mô tả thao tác) qua kênh hỗ trợ trong hộp thoại Giới thiệu.
Tính đa luồng
Đa luồng có sẵn của Excel
File → Options → Advanced → Formulas → "Enable multi-threaded calculation":
- Mặc định: theo số nhân CPU.
- Có thể đặt cứng số luồng nếu muốn chừa CPU cho việc khác.
Lưu ý quan trọng: chỉ hàm có sẵn của Excel mới được tính song song. UDF của add-in (mọi hàm dvd...) chạy đơn luồng — thêm nhân CPU không làm chúng nhanh hơn. Đây là lý do "giảm số ô UDF" hiệu quả hơn mọi tinh chỉnh phần cứng.
Hàng đợi macro
Vài hàm phải đợi Excel rảnh mới làm được phần việc của mình. Một hàm đang tính thì không được phép sửa sheet, nên những hàm sau xếp việc vào hàng đợi và chạy ngay sau khi lượt tính kết thúc:
dvdAutoHide— ẩn/hiện dòng.dvdPic— chèn ảnh vào ô.dvdMVLookup,dvdMCLookup,dvdUniqueV— ghi các kết quả thứ 2 trở đi xuốngoutputRange(cách dành cho Excel 2016/2019 vốn không có mảng động — dynamic array).
Trong thực tế: đừng gõ dở dang trong một ô rồi chờ dvdPic vẽ xong ảnh — phải kết thúc việc nhập (Enter / Esc) thì hàng đợi mới chạy. Cũng vì vậy mà ba hàm ghi outputRange ở trên không hợp để rải hàng loạt: mỗi ô là một lượt ghi sheet phải xếp hàng sau lượt tính.
Giảm dung lượng file
Lưu dạng .xlsb
.xlsb (Excel Binary Workbook) có cùng tính năng với .xlsx nhưng lưu ở dạng nhị phân:
- Dung lượng file nhỏ hơn đáng kể với workbook nhiều công thức.
- Mở và lưu nhanh hơn.
- Đôi khi không tương thích với các công cụ bên thứ ba đọc file Excel.
→ Nên cân nhắc .xlsb cho file lớn.
Dọn ô thừa
Workbook có ô trống ở dòng 1,000,000 (do dán nhầm) → Excel vẫn coi sheet là rất lớn.
Cách xử lý:
- Bấm
Ctrl + End→ con trỏ nhảy tới ô mà Excel coi là ô cuối. - Nếu ô đó nằm xa hơn vùng có nội dung thật → có ô rỗng còn sót định dạng.
- Chọn các dòng/cột thừa → chuột phải → Delete.
- Lưu → đóng → mở lại → bấm
Ctrl + End→ giờ đã nhảy đúng vị trí.
Hai lệnh giúp dọn nhanh phần này: Xoá format không dùng và Xoá Cell Style ngoại lai (style rác đi theo file người khác gửi tới, thường lên tới hàng nghìn style thừa).
Nén ảnh
File → Compress Pictures → 96 ppi (email) hoặc 150 ppi (web).
→ Dung lượng giảm rất nhiều nếu workbook có nhiều ảnh. Với ảnh chưa chèn, dùng Chỉnh cỡ ảnh để xử lý hàng loạt trước.
Liên quan
- Nguyên tắc làm việc hiệu quả — các mẹo dùng chung.
- Sao lưu & khôi phục — chiến lược sao lưu.
- Mẹo nâng cao — dành cho người dùng thành thạo.
- 20 sự cố thường gặp — mục #18: workbook chậm sau khi cài DVDAddin.