Giảm dung lượng của file excel (1 người xem)

Liên hệ QC

Người dùng đang xem chủ đề này

Tôi tuân thủ nội quy khi đăng bài

CNKyNguyen

Thành viên mới
Tham gia
1/12/20
Bài viết
6
Được thích
5
Tôi có một số file excel dung lượng rất lớn, tốn rất nhiều thời gian khi copy , dán ...
Sau khi tìm đọc các bài trong diễn đàn và thử nhiều cách thì tôi thấy cách sau có hiệu quả rất tốt .
Vì không nhớ đã copy đoạn code từ bài viết nào và của tác giả nào nên tôi xin phép tác giả chia sẻ lại đoạn code để mọi người có thể sử dụng.

Xin cám ơn rất nhiều ạ.

Mở file Excel, vào sheet cần giảm dung lượng : ALt + F11 rồi vào tab Insert chọn Modul rồi copy đoạn code ở dưới dán vào đó.
rồi nhấn F5 là xong

Sub StyleKill()
Dim StyT As Style
Dim t As Long
On Error Resume Next
For Each StyT In ActiveWorkbook.Styles
If Not StyTButton Then
t = t + 1
If StyT.Name <> "1" Then StyT.Delete
End If
Next StyT
MsgBox t
MsgBox "XONG"
End Sub

nếu bài viết có gì sơ sót , xin mọi người lượng thứ.

Xin cám ơn rất nhiều .
 
Tôi có một số file excel dung lượng rất lớn, tốn rất nhiều thời gian khi copy , dán ...
Sau khi tìm đọc các bài trong diễn đàn và thử nhiều cách thì tôi thấy cách sau có hiệu quả rất tốt .
Vì không nhớ đã copy đoạn code từ bài viết nào và của tác giả nào nên tôi xin phép tác giả chia sẻ lại đoạn code để mọi người có thể sử dụng.

Xin cám ơn rất nhiều ạ.

Mở file Excel, vào sheet cần giảm dung lượng : ALt + F11 rồi vào tab Insert chọn Modul rồi copy đoạn code ở dưới dán vào đó.
rồi nhấn F5 là xong

Sub StyleKill()
Dim StyT As Style
Dim t As Long
On Error Resume Next
For Each StyT In ActiveWorkbook.Styles
If Not StyTButton Then
t = t + 1
If StyT.Name <> "1" Then StyT.Delete
End If
Next StyT
MsgBox t
MsgBox "XONG"
End Sub

nếu bài viết có gì sơ sót , xin mọi người lượng thứ.

Xin cám ơn rất nhiều .
Cảm ơn bạn đã chia sẻ , bài viết này , mình muốn làm rõ hơn để bạn hiểu về vấn đề "file excel nặng".
"File excel nặng " sẽ rơi vào 1 trong 2 tình huống (hoặc cũng có thể là cả 2) :
*** File có dung lượng rất lớn , vài chục Mb trở lên
*** File có tốc độ tính toán rất chậm , thường xuyên calculation.... , load rất lâu mỗi lần mở file hay thao tác bất cứ cái gì trong file (trường hợp này thường gặp hơn) dù dung lượng file đôi khi rất nhỏ , chỉ vài Mb.
- Có rất nhiều nguyên nhân khiến "file nặng" (cả về dung lượng lẫn tốc độ làm việc), trong đó , mình biết được có ít nhất là 10 nguyên nhân , nên tùy theo mỗi file khác nhau của các bạn mà tìm nguyên nhân chính xác để khắc phục. Cái code của bạn nói chỉ là khắc phục 1 trong số các nguyên nhân làm file bị lớn về dung lượng thôi nhé (code của bạn có tác dụng xóa các Style)
1. Máy tính bị nhiễm virus hoặc file bị virus (hoặc có macro hoặc các addin lỗi ...)
2. File có chứa quá nhiều name lỗi , quá nhiều shape , object hoặc style lỗi (cái này đôi khi do thao tác copy paste dẫn đến các name , shape , style object ... bị duplicate lên nhiều lần)
3.File có quá nhiều CF (Conditional Formatting) (cái này cũng có thể do trong quá trình sử dụng , khi copy và paste không đúng cách nên khiến cho các ô CF bị duplicate lên nhiều lần ở nhiều sheet khác nhau)
4. File có link đến 1 hoặc nhiều file khác dẫn đến khi mở file thì nó phải load công thức / data từ các file mà nó link đến để tính toán và cập nhật lại kết quả mới nên làm chậm file.
5. Vùng dữ liệu dư thừa quá nhiều , bạn bấm phím CTRL _ END , con trỏ chuột sẽ di chuyển đến ô cuối cùng có dữ liệu trong sheet , có những trường hợp vùng dữ liệu của bạn, bằng mắt thường , bạn thấy nó chỉ đến ô Z1000 , nhưng khi bấm CTRL END , nó có thể nhảy đến ZZ300000 , nên hãy xóa bỏ những cột / hàng dư thừa đó đi, sẽ làm giảm dung lượng file đi đáng kể đấy.
6. File sử dụng quá nhiều nhóm hàm "siêu nặng" như SUMIFS , COUNTIFS , COUNTA, MAXIFS ... những hàm này chiếm rất nhiều bộ nhớ , khiến file chạy rất nặng khi tính toán , thay vì vậy, trong rất nhiều trường hợp, bạn hãy sử dụng các cách khác như dùng Pivot table , dùng Sort kết hợp Index , match để thay thế cho MAXIFS
7. Công thức tính toán không tối ưu , thường dùng theo kiểu bê nguyên cột trong các công thức (ví dụ : thay vì SUM(A1:A500) thì lại dùng SUM(A:A) khiến cho Excel phải load hết hơn 1 triệu dòng cho mỗi 1 lần tính toán, thay vì vậy , bạn có thể dùng hàm offset để tìm và giới hạn vùng dữ liệu cần tính toán (ví dụ nếu bạn không biết chắc chắn vùng dữ liệu từ từ A1 đến A500 hay A600... hay bao nhiêu thì bạn có thể dùng hàm SUM(OFFSET($A$1,0,0,match(2,1/(A:A<>"")),1)) như vậy Excel sẽ tự tìm từ A1 đến dòng cuối cùng có dữ liệu trong cột A, như vậy công thức sẽ nhẹ hơn
8. File có sử dụng code VBA ở chế độ Selection Change nên mỗi cái click chuột , mỗi lần thay đổi là code chạy nên khiến file phải liên tục refresh, tính toán cũng sẽ làm chậm file
9. File sử dụng quá nhiều cột phụ không cần thiết hoặc cách đặt công thức tính toán (thuật toán) KHÔNG TỐI ƯU dẫn đến cách tính toán của file lòng vòng , lặp lại nhiều lần qua nhiều sheet , có nhiều bước tính toán trùng lặp ... cũng làm chậm file.
10. Nếu bạn đang sử dụng Excel bản 32 bit thì hãy thử đổi sang bản excel 64 bit , bản excel 32 bit bị giới hạn bộ nhớ nhỏ hơn nhiều so với bản 64bit , nên có những file, khi mở trong excel 32bit, chạy rất nặng, rất chậm , nhưng khi mở trên máy cài excel 64bit thì nó load nhanh hơn rất nhiều.

Cuối cùng , nếu bạn đang lưu file với đuôi là .xls hay .xlsx thì hãy thử nhấn F12 , chuyển sang lưu ở dạng đuôi .xlsb thử xem, file sẽ giảm dung lượng 1 cách đáng kinh ngạc luôn đó.
 
Lần chỉnh sửa cuối:
Cảm ơn bạn đã chia sẻ , bài viết này , mình muốn làm rõ hơn để bạn hiểu về vấn đề "file excel nặng".
"File excel nặng " sẽ rơi vào 1 trong 2 tình huống (hoặc cũng có thể là cả 2) :
*** File có dung lượng rất lớn , vài chục Mb trở lên
*** File có tốc độ tính toán rất chậm , thường xuyên calculation.... , load rất lâu mỗi lần mở file hay thao tác bất cứ cái gì trong file (trường hợp này thường gặp hơn) dù dung lượng file đôi khi rất nhỏ , chỉ vài Mb.
- Có rất nhiều nguyên nhân khiến "file nặng" (cả về dung lượng lẫn tốc độ làm việc), trong đó , mình biết được có ít nhất là 10 nguyên nhân , nên tùy theo mỗi file khác nhau của các bạn mà tìm nguyên nhân chính xác để khắc phục. Cái code của bạn nói chỉ là khắc phục 1 trong số các nguyên nhân làm file bị lớn về dung lượng thôi nhé (code của bạn có tác dụng xóa các Style)
1. Máy tính bị nhiễm virus hoặc file bị virus (hoặc có macro hoặc các addin lỗi ...)
2. File có chứa quá nhiều name lỗi , quá nhiều shape , object hoặc style lỗi (cái này đôi khi do thao tác copy paste dẫn đến các name , shape , style object ... bị duplicate lên nhiều lần)
3.File có quá nhiều CF (Conditional Formatting) (cái này cũng có thể do trong quá trình sử dụng , khi copy và paste không đúng cách nên khiến cho các ô CF bị duplicate lên nhiều lần ở nhiều sheet khác nhau)
4. File có link đến 1 hoặc nhiều file khác dẫn đến khi mở file thì nó phải load công thức / data từ các file mà nó link đến để tính toán và cập nhật lại kết quả mới nên làm chậm file.
5. Vùng dữ liệu dư thừa quá nhiều , bạn bấm phím CTRL _ END , con trỏ chuột sẽ di chuyển đến ô cuối cùng có dữ liệu trong sheet , có những trường hợp vùng dữ liệu của bạn, bằng mắt thường , bạn thấy nó chỉ đến ô Z1000 , nhưng khi bấm CTRL END , nó có thể nhảy đến ZZ300000 , nên hãy xóa bỏ những cột / hàng dư thừa đó đi, sẽ làm giảm dung lượng file đi đáng kể đấy.
6. File sử dụng quá nhiều nhóm hàm "siêu nặng" như SUMIFS , COUNTIFS , COUNTA, MAXIFS ... những hàm này chiếm rất nhiều bộ nhớ , khiến file chạy rất nặng khi tính toán , thay vì vậy, trong rất nhiều trường hợp, bạn hãy sử dụng các cách khác như dùng Pivot table , dùng Sort kết hợp Index , match để thay thế cho MAXIFS
7. Công thức tính toán không tối ưu , thường dùng theo kiểu bê nguyên cột trong các công thức (ví dụ : thay vì SUM(A1:A500) thì lại dùng SUM(A:A) khiến cho Excel phải load hết hơn 1 triệu dòng cho mỗi 1 lần tính toán, thay vì vậy , bạn có thể dùng hàm offset để tìm và giới hạn vùng dữ liệu cần tính toán (ví dụ nếu bạn không biết chắc chắn vùng dữ liệu từ từ A1 đến A500 hay A600... hay bao nhiêu thì bạn có thể dùng hàm SUM(OFFSET($A$1,0,0,match(2,1/(A:A<>"")),1)) như vậy Excel sẽ tự tìm từ A1 đến dòng cuối cùng có dữ liệu trong cột A, như vậy công thức sẽ nhẹ hơn
8. File có sử dụng code VBA ở chế độ Selection Change nên mỗi cái click chuột , mỗi lần thay đổi là code chạy nên khiến file phải liên tục refresh, tính toán cũng sẽ làm chậm file
9. File sử dụng quá nhiều cột phụ không cần thiết hoặc cách đặt công thức tính toán (thuật toán) KHÔNG TỐI ƯU dẫn đến cách tính toán của file lòng vòng , lặp lại nhiều lần qua nhiều sheet , có nhiều bước tính toán trùng lặp ... cũng làm chậm file.
10. Nếu bạn đang sử dụng Excel bản 32 bit thì hãy thử đổi sang bản excel 64 bit , bản excel 32 bit bị giới hạn bộ nhớ nhỏ hơn nhiều so với bản 64bit , nên có những file, khi mở trong excel 32bit, chạy rất nặng, rất chậm , nhưng khi mở trên máy cài excel 64bit thì nó load nhanh hơn rất nhiều.

Cuối cùng , nếu bạn đang lưu file với đuôi là .xls hay .xlsx thì hãy thử nhấn F12 , chuyển sang lưu ở dạng đuôi .xlsb thử xem, file sẽ giảm dung lượng 1 cách đáng kinh ngạc luôn đó.
Hay quá ạ.
Cám ơn bạn đã chia sẽ ạ.
 
Em có file excel dung lượng rất lớn, bác nào có thể xem giúp em nguyên nhân, có thể khắc phục giảm nhẹ hơn được không ạ
Em cám ơn
Bài đã được tự động gộp:

Em có file excel dung lượng rất lớn, bác nào có thể xem giúp em nguyên nhân, có thể khắc phục giảm nhẹ hơn được không ạ
Em cám ơn
Em có file excel dung lượng rất lớn, bác nào có thể xem giúp em nguyên nhân, có thể khắc phục giảm nhẹ hơn được không ạ
Em cám ơn
1735382455152.png
Em có file excel dung lượng rất lớn, bác nào có thể xem giúp em nguyên nhân, có thể khắc phục giảm nhẹ hơn được không ạ
Em cám ơn
 
Quá hay xin cám ơn bạn Phúc.
 
Web KT

Bài viết mới nhất

Back
Top Bottom