Làm sao để tăng tốc độ của File Excel có hơn 100 sheet

  • Thread starter Thread starter member
  • Ngày gửi Ngày gửi
Liên hệ QC

member

Thành viên chính thức
Tham gia
30/8/07
Bài viết
62
Được thích
7
Chào các bác;
em có file Excel quản lý máy điện thoại của các công trường;
Có hơn 130 máy, tương ứng với chừng đó sheet
Một số thông tin của các sheet được link sang Sheet Main và Sheet Report
Ban đầu, khi chỉ có tầm 50 sheet thì file hoạt động ngon lành,
Vấn đề xuất hiện khi ngày càng nhiều sheet hơn, mỗi khi em cập nhật thông tin vào sheet nào đó thì Excel lại báo xử lý rất lâu
em kiểm tra trong Task Manager của Win thì thấy Excel chạy rất tốn dung lượng

Nhờ mọi người nghía qua file Excel của em và chỉ cho em cách xử lí vấn đề được không ạ!

Em cảm ơn và chúc mọi người một ngày mới tốt lành!

P/S: em Win 10 64 bit, ram 4GB, ổ cứng SSD, Office 2013 32bit (cái này vì em đang nghiên cứu món Access để dùng chung với nhiều người nên phải cài Office 32 bit)
 

File đính kèm

Chào các bác;
em có file Excel quản lý máy điện thoại của các công trường;
Có hơn 130 máy, tương ứng với chừng đó sheet
Một số thông tin của các sheet được link sang Sheet Main và Sheet Report
Ban đầu, khi chỉ có tầm 50 sheet thì file hoạt động ngon lành,
Vấn đề xuất hiện khi ngày càng nhiều sheet hơn, mỗi khi em cập nhật thông tin vào sheet nào đó thì Excel lại báo xử lý rất lâu
em kiểm tra trong Task Manager của Win thì thấy Excel chạy rất tốn dung lượng

Nhờ mọi người nghía qua file Excel của em và chỉ cho em cách xử lí vấn đề được không ạ!

Em cảm ơn và chúc mọi người một ngày mới tốt lành!

P/S: em Win 10 64 bit, ram 4GB, ổ cứng SSD, Office 2013 32bit (cái này vì em đang nghiên cứu món Access để dùng chung với nhiều người nên phải cài Office 32 bit)
Với yêu cầu này bạn nên thiết kế lại cách làm. Bạn nên chỉ để 1 sheet data để lưu tất cả các điểm quản lý, nếu cần, thiết kế form nhập dữ liệu cho nhanh sau đó đưa dữ liệu vừa nhập và data, sau đó muốn xử lý sao thì sử lý
 
Chào các bác;
em có file Excel quản lý máy điện thoại của các công trường;
Có hơn 130 máy, tương ứng với chừng đó sheet
Một số thông tin của các sheet được link sang Sheet Main và Sheet Report
Ban đầu, khi chỉ có tầm 50 sheet thì file hoạt động ngon lành,
Vấn đề xuất hiện khi ngày càng nhiều sheet hơn, mỗi khi em cập nhật thông tin vào sheet nào đó thì Excel lại báo xử lý rất lâu
em kiểm tra trong Task Manager của Win thì thấy Excel chạy rất tốn dung lượng

Nhờ mọi người nghía qua file Excel của em và chỉ cho em cách xử lí vấn đề được không ạ!

Em cảm ơn và chúc mọi người một ngày mới tốt lành!

P/S: em Win 10 64 bit, ram 4GB, ổ cứng SSD, Office 2013 32bit (cái này vì em đang nghiên cứu món Access để dùng chung với nhiều người nên phải cài Office 32 bit)
Gợi ý cho làm thôi He
1/ Nếu là mình mình sẻ tạo 1 Database.accdb .... lưu hết dữ liệu vào đó ...
Vì dữ liệu nhiều lưu trên Excel làm cho dung lương file lớn và mở file càng chậm ....vv moi cái tính toán cũng chậm theo

2/ Thay vì mỗi tay 1 Sheet thấy cấu trúc như nhau thì thiết kế 1 cái Form để thao tác trên đó Lưu hay truy xuất dữ liệu ....trên Database.accdb
Thì xóa hết toàn bộ các Sheet của mấy tay kia đi cho sạch sẻ ... và làm nhẹ file

3/ nên sử dụng Excel như File chỉ thực hiện thao tác và tính toán xong lưu hết vào Database.accdb
Vì File *.accdb cho ta lưu dung lượng tối đa là 2G vì vậy sẻ rất nhiều đấy .... và khi cần ta có thể tạo Query cho nó tự động tính khi có sự phát sinh dữ liệu trên Table

4/ Theo Bác Bill nói kết hợp Excel với Access là 1 giải pháp hoàn hảo đấy ... nghe thực hiện hay ko điều đó tùy bạn he .... Chấm hết
 
Lần chỉnh sửa cuối:
Riêng cái chuyện mở file của bạn là mày mình không chịu nổi rồi;

Bạn có thể gởi lên chỉ 1 trang tính lên không, trong ~ 130 trang đó. Khi đó có khi bạn được chỉ dẫn thiết kế lại CSDL hợp lí hơn chăng?
 
Với yêu cầu này bạn nên thiết kế lại cách làm. Bạn nên chỉ để 1 sheet data để lưu tất cả các điểm quản lý, nếu cần, thiết kế form nhập dữ liệu cho nhanh sau đó đưa dữ liệu vừa nhập và data, sau đó muốn xử lý sao thì sử lý

Gợi ý cho làm thôi He
1/ Nếu là mình mình sẻ tạo 1 Database.accdb .... lưu hết dữ liệu vào đó ...
Vì dữ liệu nhiều lưu trên Excel làm cho dung lương file lớn và mở file càng chậm ....vv moi cái tính toán cũng chậm theo

2/ Thay vì mỗi tay 1 Sheet thấy cấu trúc như nhau thì thiết kế 1 cái Form để thao tác trên đó Lưu hay truy xuất dữ liệu ....trên Database.accdb
Thì xóa hết toàn bộ các Sheet của mấy tay kia đi cho sạch sẻ ... và làm nhẹ file

3/ nên sử dụng Excel như File chỉ thực hiện thao tác và tính toán xong lưu hết vào Database.accdb
Vì File *.accdb cho ta lưu dung lượng tối đa là 2G vì vậy sẻ rất nhiều đấy .... và khi cần ta có thể tạo Query cho nó tự động tính khi có sự phát sinh dữ liệu trên Table

4/ Theo Bác Bill nói kết hợp Excel với Access là 1 giải pháp hoàn hảo đấy ... nghe thực hiện hay ko điều đó tùy bạn he .... Chấm hết

Vâng, cảm ơn các bác, em cũng đã nghĩ đến giải pháp đó rồi nên đang nghiên cứu món Access
Có điều ngâm kiú chưa đâu vào đâu cả, nên em chỉ đang hỏi trong phạm vi của Excel thôi ạ
Bài đã được tự động gộp:

Riêng cái chuyện mở file của bạn là mày mình không chịu nổi rồi;

Bạn có thể gởi lên chỉ 1 trang tính lên không, trong ~ 130 trang đó. Khi đó có khi bạn được chỉ dẫn thiết kế lại CSDL hợp lí hơn chăng?

Vâng, em để lại 3 sheet, bác xem hộ em với ạ
 

File đính kèm

Lần chỉnh sửa cuối:
Vâng, cảm ơn các bác, em cũng đã nghĩ đến giải pháp đó rồi nên đang nghiên cứu món Access
Có điều ngâm kiú chưa đâu vào đâu cả, nên em chỉ đang hỏi trong phạm vi của Excel thôi ạ
Bài đã được tự động gộp:



Vâng, em để lại 3 sheet, bác xem hộ em với ạ
Vấn đề dữ liệu của bạn cũng không phát sinh quá 1 triệu dòng đâu, nên có thể sử dụng thuần excel là ok. quan trọng là bạn phải thiết kế lại chỗ chứa dữ liệu cho hợp lý
 
Vấn đề dữ liệu của bạn cũng không phát sinh quá 1 triệu dòng đâu, nên có thể sử dụng thuần excel là ok. quan trọng là bạn phải thiết kế lại chỗ chứa dữ liệu cho hợp lý

Cảm ơn bác, bác có ý tưởng gì cho em về phần "hợp lý" đó không ạ? Đó là điều em muốn khi lên đây hỏi đấy ạ!
Có điều số máy phát sinh là thường xuyên và em muốn mỗi một máy đều có một hồ sơ lưu lại lịch sử hoạt động rõ ràng ạ
 
Bạn xem cách thiết kế này có trỡ ngại gì không
Sẽ fải xài VBA; Quên công thức đi là vừa!
 

File đính kèm

Bạn xem cách thiết kế này có trỡ ngại gì không
Sẽ fải xài VBA; Quên công thức đi là vừa!

Ý bác là tất cả lịch sử hoạt động của tất cả các máy vào một sheet ấy ạ?
Em cũng đã từng nghĩ đến phương án này, nhưng em chỉ biết mỗi dùng các hàm vì VBA thì em chỉ biết dùng chứ k0 biết viết, nên phương án thực hiện gặp nhiều khó khăn, cuối cùng em phải dùng giải pháp mà em đã làm đó ạ

Và cái em muốn là một số thông tin của các máy được hiển thị trong sheet tổng hợp (Sheet Main), đó là:
1. Ngày mua mới và ngày gia hạn của các máy (cái này thì sẽ được tìm bằng giá trị "Mua mới" và "Gia hạn" trong lịch sử hoạt động)
2. Hoạt động CUỐI CÙNG cùng với ngày tháng, địa điểm hiện tại, của từng máy

Thêm nữa là em cần một cái Report cho lịch sử hoạt động của mỗi máy tương tự như Form đang dùng cho các Sheet ấy ạ

Chân thành cảm ơn bác!
 
Mình sẵn lòng giúp bạn đến khi mình hụt hơi!
Nhưng giờ bạn đổ dữ liệu các trang tính vơ 2 trang 'ChiTiet' & 'Chung í đi
Khi dữ liệu đổ xong thì đến việc "Mua mới" & "Gia hạn"
Vì 2 cụm từ tiếng Việt nam không làm VBA thích thú, nên nó sẽ chê, không hỗ trợ
Vậy nên ta cần lập danh mục cho các khoản này, ví dụ
PHP:
'
Mã     Hoạt động   '
MM  Mua mới
BG   Bàn giao Ctr (?)
CM   Cấp mới
KS   Không nhận sim
GDB   gửi về đồng bộ
GH   Gia hạn
DB   Đã đồng bộ xong
BG   Bàn giao công trường (?)
KTr   BGL gửi về ktra
Tra   Trả về Ctr
. . .    . . . . . . . . .
Hai dòng có dấu '?' là như nhau?

Rất vui nếu được tiếp tục đồng hành cùng bạn trong thời gian tới!
 
Vấn đề xuất hiện khi ngày càng nhiều sheet hơn, mỗi khi em cập nhật thông tin vào sheet nào đó thì Excel lại báo xử lý rất lâu
em kiểm tra trong Task Manager của Win thì thấy Excel chạy rất tốn dung lượng
Mỗi 1 ô công thức bạn dùng tham chiếu cả cột (kiểu A:A; G:G, mỗi cột gồm 1048576 ô), 100 ô chứa công thức như vậy đã làm cho file ỳ ạch rồi.
 
Chào các bác;
em có file Excel quản lý máy điện thoại của các công trường;
Có hơn 130 máy, tương ứng với chừng đó sheet
Một số thông tin của các sheet được link sang Sheet Main và Sheet Report
Ban đầu, khi chỉ có tầm 50 sheet thì file hoạt động ngon lành,
Vấn đề xuất hiện khi ngày càng nhiều sheet hơn, mỗi khi em cập nhật thông tin vào sheet nào đó thì Excel lại báo xử lý rất lâu
em kiểm tra trong Task Manager của Win thì thấy Excel chạy rất tốn dung lượng

Nhờ mọi người nghía qua file Excel của em và chỉ cho em cách xử lí vấn đề được không ạ!

Em cảm ơn và chúc mọi người một ngày mới tốt lành!

P/S: em Win 10 64 bit, ram 4GB, ổ cứng SSD, Office 2013 32bit (cái này vì em đang nghiên cứu món Access để dùng chung với nhiều người nên phải cài Office 32 bit)
Góp ý cho bạn:
1/ Theo dõi kiểu bạn cho chết à, 130 máy dùng 130 sheet thì tổng hợp kiểu gì?
2/ Theo tôi thì làm vầy:
- Dùng 1 sheet mẫu để nhập liệu chung cho 130 máy.
- 1 Sheet theo dõi thì thêm 1 cột tên máy.
Với kiểu này thì việc tổng Hợp chỉ trong 1 vài phút. Nếu đồng ý phương án này thì ta bàn tiếp.
 
Lần chỉnh sửa cuối:
Mình sẵn lòng giúp bạn đến khi mình hụt hơi!
Nhưng giờ bạn đổ dữ liệu các trang tính vơ 2 trang 'ChiTiet' & 'Chung í đi
Khi dữ liệu đổ xong thì đến việc "Mua mới" & "Gia hạn"
Vì 2 cụm từ tiếng Việt nam không làm VBA thích thú, nên nó sẽ chê, không hỗ trợ
Vậy nên ta cần lập danh mục cho các khoản này, ví dụ
PHP:
'
Mã     Hoạt động   '
MM  Mua mới
BG   Bàn giao Ctr (?)
CM   Cấp mới
KS   Không nhận sim
GDB   gửi về đồng bộ
GH   Gia hạn
DB   Đã đồng bộ xong
BG   Bàn giao công trường (?)
KTr   BGL gửi về ktra
Tra   Trả về Ctr
. . .    . . . . . . . . .
Hai dòng có dấu '?' là như nhau?

Rất vui nếu được tiếp tục đồng hành cùng bạn trong thời gian tới!
Em tạm thời "đổ" thông tin của 3 máy vào 2 Sheet ChiTiet đã bác nhé, chứ copy 130 máy thì chắc đến Tết mất :D
ngoài ra thì bác có thể bổ sung Sheet HosoMay để lọc ra các thông tin cũng như lịch sử hoạt động của máy khi cần nhưu trong file em đính kèm được k0 ạ?
Em cảm ơn bác!
Bài đã được tự động gộp:

Góp ý cho bạn:
1/ Theo dõi kiểu bạn cho chết à, 130 máy dùng sheet thì tổng hợp kiểu gì?
2/ Theo tôi thì làm vầy:
- Dùng 1 sheet mẫu để nhập liệu chung cho 130 máy.
- 1 Sheet theo dõi thì thêm 1 cột tên máy.
Với kiểu này thì việc tổng Hợp chỉ trong 1 vài phút. Nếu đồng ý phương án này thì ta bàn tiếp.

Em hoàn toàn đồng ý! Vì phương án của bác nghe có vẻ giống phương án ban đầu em nghĩ, có điều bị cản trở trong thực hiện thôi.
Bác xem file đính kèm của em có giống với phương án của bác không nhé!
Bài đã được tự động gộp:

Mỗi 1 ô công thức bạn dùng tham chiếu cả cột (kiểu A:A; G:G, mỗi cột gồm 1048576 ô), 100 ô chứa công thức như vậy đã làm cho file ỳ ạch rồi.
bth thì file cũng ít sheet ạ nên cũng chẳng để ý đến cái này lắm nên thành quen mất rồi bác ạ
Em cảm ơn bác!
 

File đính kèm

Lần chỉnh sửa cuối:
(1) Em tạm thời "đổ" thông tin của 3 máy vào 2 Sheet ChiTiet đã bác nhé, chứ copy 130 máy thì chắc đến Tết mất
(2) Ngoài ra thì bác có thể bổ sung Sheet HosoMay để lọc ra các thông tin cũng như lịch sử hoạt động của máy khi cần nhưu trong file em đính kèm được k0 ạ?
(1) Tiếp theo ta cần lập bảng danh mục các hành động (Côt 'D' của trang 'ChiTiet'); Nhưng có lẽ nên lập đủ danh mục này cho 130 trang tính luôn;
Chuyện này hoàn toàn là của bạn, mình sẽ chỉ góp í khi bạn có bảng danh mục này. (Tham khảo cách tạo danh mục của bài trước của mình)
(1.1) Trước sau gì bạn cũng fải đỗ hết dữ liệu 130 trang vô 'ChiTiet'; Vậy nên rãnh rỗi bạn nên từ từ mà thực hiện việc này.
Để khi vận hành chương trình ta biết rằng cách giải quyết của chúng ta có đáp ứng với iêu cầu tộc độ xử lý hay không.

(2) Chuyện đó dễ mà & để sau đi
(3)
** Cột STT, Cột MÁY ẢNH & cột IMEI sẽ lấy từ Sheet Chung sang (tự động)
** Cột Ngày, Hoạt động,Công trường, Lý do lấy từ Sheet ChiTiet sang
Mà lấy vài dòng cần thiết thôi chứ nhỉ? Chả lẽ lại lấy hết sang?
Hãy cho biết cần lấy những dòng nào của 1 máy?
 
(1) Tiếp theo ta cần lập bảng danh mục các hành động (Côt 'D' của trang 'ChiTiet'); Nhưng có lẽ nên lập đủ danh mục này cho 130 trang tính luôn;
Chuyện này hoàn toàn là của bạn, mình sẽ chỉ góp í khi bạn có bảng danh mục này. (Tham khảo cách tạo danh mục của bài trước của mình)
(1.1) Trước sau gì bạn cũng fải đỗ hết dữ liệu 130 trang vô 'ChiTiet'; Vậy nên rãnh rỗi bạn nên từ từ mà thực hiện việc này.
Để khi vận hành chương trình ta biết rằng cách giải quyết của chúng ta có đáp ứng với iêu cầu tộc độ xử lý hay không.

(2) Chuyện đó dễ mà & để sau đi
(3)

Mà lấy vài dòng cần thiết thôi chứ nhỉ? Chả lẽ lại lấy hết sang?
Hãy cho biết cần lấy những dòng nào của 1 máy?

Morning bác!
1. Việc 130 sheet là tương đối, và con số này còn tăng lên hàng tháng, nghĩa là h em cũng phải bổ sung dần dần ạ
2. Ở Sheet Main thì các cột Ngày, Hoạt động, Công trường, Lý do lấy từ Sheet ChiTiet sang thôi ạ, là những cột em bôi màu xanh lục đó ạ

Cảm ơn bác!
 
Mình nêu vấn đề là chép những dòng nào hay tất cả; Bạn lại trả lời là các cột, hết biết!
 
Mình nêu vấn đề là chép những dòng nào hay tất cả; Bạn lại trả lời là các cột, hết biết!
Em chưa hiểu ý bác lắm!
Nếu ý bác hỏi lấy dòng nào cho sang sheet Main của một mã máy từ sheet ChiTiet thì là chỉ lấy dòng hoạt động có ngày cuối cùng của mã máy đó ạ.
Còn nếu ở sheet hồ sơ của máy thì mới liệt kê tất cả các hoạt động của máy ạ
Cảm ơn bác!
 
Em chưa hiểu ý bác lắm!
Nếu ý bác hỏi lấy dòng nào cho sang sheet Main của một mã máy từ sheet ChiTiet thì là chỉ lấy dòng hoạt động có ngày cuối cùng của mã máy đó ạ.
Còn nếu ở sheet hồ sơ của máy thì mới liệt kê tất cả các hoạt động của máy ạ
Cảm ơn bác!
Theo tôi thì thế này:
1/ Sheet Nhap_Lieu: Có 2 vùng.
- C5: C20 nhập liệu vào sheet TK_May.
- F5: F11 nhập liệu vào sheet Theo_Doi.
2/ Sheet TK_May: Dùng theo thông tin lý lịch của tất cả các loại máy.
3/ Sheet Theo_Doi: Dùng theo dõi lịch sử, quá trình sử dụng, luân chuyển máy cho từng người, từng công trường theo từng thời kỳ.
4/ Sheet HoSoMay: Tại C2 gõ tên máy sẽ tra cứu tất cả thông tin lý lịch, lịch sử của máy đó.
 

File đính kèm

Lần chỉnh sửa cuối:
Theo tôi thì thế này:
1/ Sheet Nhap_Lieu: Có 2 vùng.
- C5: C20 nhập liệu vào sheet TK_May.
- F5: F11 nhập liệu vào sheet Theo_Doi.
2/ Sheet TK_May: Dùng theo thông tin lý lịch của tất cả các loại máy.
3/ Sheet Theo_Doi: Dùng theo dõi lịch sử, quá trình sử dụng, luân chuyển máy cho từng người, từng công trường theo từng thời kỳ.
4/ Sheet HoSoMay: Tại C2 gõ tên máy sẽ tra cứu tất cả thông tin lý lịch, lịch sử của máy đó.

OK bác, em chỉnh sửa lại một chút trong file Excel cho đúng mục đích của em ạ
Trong đó 2 sheet Theo_Doi và TK_May sẽ là 2 Sheet chứa toàn bộ thông tin
1. Sheet TK_may sẽ chứa các thông tin chung cố định của máy bao gồm: Mã máy, Model, Imei, số điện thoại, pass email, pass máy, ngày mua (chữ màu xanh dương)
Và một vài thông tin của lần Hoạt động gần nhất, Công trường hiện tại, người đưa/nhận, lý do (chữ màu đỏ)
2. Sheet Theo_doi là tổng hợp toàn bộ các lịch sử hoạt động của máy
3. Sheet hosomay thì lọc các thông tin cố định và toàn bộ các hoạt động của máy được nhập vào trong phần Header

Chú ý:
1. Ngày nạp tiền bằng ngày gia hạn cuối cùng hoặc ngày mua nếu chưa phát sinh gia hạn
2. Các hoạt động bao gồm:
Mua mới
Gia hạn
Bàn giao Ctr
Ctr gửi về ktra
Trả về Ctr
Hỏng/loại
Làm mất

Em cảm ơn bác!
 

File đính kèm

. . . . . . . . .
Chú ý:
1. . . . . .
2. Các hoạt động bao gồm:
Mua mới
Gia hạn
Bàn giao Ctr
Ctr gửi về ktra
Trả về Ctr
Hỏng/loại
Làm mất
Với mình danh mục các hành động này là rất quan trọng để CSDL vận hành suông sẻ.
Bỡi vậy nân ta nên thiết lập cho chúng bảng danh mục như sau:
PHP:
 Mã     Hành động
MM   Mua mới
GH   Gia hạn
BG   Bàn giao Ctr
Tr   Trả về Ctr
??   Cấp mới
?    Không nhận sim
?    gửi về đồng bộ
?    Đã đồng bộ xong
??   Bàn giao công trường
?    BGL gửi về ktra

Trên bảng mình còn có 2 loại nghi vấn:
Loại 1 dấu hỏi: Có fải là những hành động mới mà bạn liệt kê chưa đủ?
Loại 2 dấu hỏi: Có fải chúng trùng với những mã hành động bên trên không

Mình nói là coi trọng bỡi vì sau này chúng ta sẽ nhấp vô CSDL không là những tên hành động, mà là mã của hành động đó.
Các vấn đề khác liện quan đến hành động, như tìm kiếm, thống kê,. . . . đều sẽ thông qua mã HĐ này.
Nếu bạn không coi trọng danh mục hành động này, mình xin fép dừng tiếp tục với bạn.
Thân ái!
 
Web KT

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

Back
Top Bottom