Xin giúp đỡ về khắc phục Exel chạy chậm (chạy 1 công thức tốn khoảng 30ph)

Liên hệ QC

Thanhnga1088

Thành viên mới
Tham gia
11/1/16
Bài viết
20
Được thích
9
Nghề nghiệp
Kế toán
Xin mọi người giúp đỡ.

Em thường làm việc với bảng Dữ liệu lớn hơn 50.000-> 1.000.000 dòng, Win XP, ram 3gb
Quen làm việc dữ liệu nhiều nên em hay chạy từng công thức, xong copy, paste value để máy tính có thể xử lý
Thời gian để xử lý 1 công thức counifs, sumifs... (khoảng 500.000 dòng) chỉ dùng chưa tới 5ph

Nhưng hiện tại em chuyển qua dùng máy tính khác, Win 10pro, core i5, ram 4gb, có PM diệt virut Kaspersky
Nhưng thời gian xử lý 1 công thức lại tốn gần 30ph (dù em đã lấy dữ liệu thô, copy dán value)
máy tính hay bị đơ

Xin mọi người chỉ em cách khắc phục với ạ
Xin cảm ơn
 
Xin mọi người giúp đỡ.

Em thường làm việc với bảng Dữ liệu lớn hơn 50.000-> 1.000.000 dòng, Win XP, ram 3gb
Quen làm việc dữ liệu nhiều nên em hay chạy từng công thức, xong copy, paste value để máy tính có thể xử lý
Thời gian để xử lý 1 công thức counifs, sumifs... (khoảng 500.000 dòng) chỉ dùng chưa tới 5ph

Nhưng hiện tại em chuyển qua dùng máy tính khác, Win 10pro, core i5, ram 4gb, có PM diệt virut Kaspersky
Nhưng thời gian xử lý 1 công thức lại tốn gần 30ph (dù em đã lấy dữ liệu thô, copy dán value)
máy tính hay bị đơ

Xin mọi người chỉ em cách khắc phục với ạ
Xin cảm ơn
Không dùng công thức tính toán, dùng VBA tính tất cả 1 lần và ghi giá trị (kết quả) vào sheet.
Thời gian chắc chỉ 1 "hơi" thuốc.
 
Xin mọi người giúp đỡ.

Em thường làm việc với bảng Dữ liệu lớn hơn 50.000-> 1.000.000 dòng, Win XP, ram 3gb
..................................................................................
Nhưng thời gian xử lý 1 công thức lại tốn gần 30ph (dù em đã lấy dữ liệu thô, copy dán value)
máy tính hay bị đơ

Xin mọi người chỉ em cách khắc phục với ạ
Xin cảm ơn
- File Excel tính toán chậm hoặc tăng dung lượng bất thường có nhiều nguyên nhân.
- Để bắt bệnh thì phải đính kèm File thì các thành viên mới biết được chính xác, còn hỏi chung chung là thua (không biết đâu mà lần).
- Bạn có thể đọc bài 7 của Link sau để tìm hiểu nguyên nhân:


http://www.giaiphapexcel.com/dienda...ăng-dung-lượng-bất-thường.130258/#post-818077
 
- File Excel tính toán chậm hoặc tăng dung lượng bất thường có nhiều nguyên nhân.
- Để bắt bệnh thì phải đính kèm File thì các thành viên mới biết được chính xác, còn hỏi chung chung là thua (không biết đâu mà lần).
- Bạn có thể đọc bài 7 của Link sau để tìm hiểu nguyên nhân:


http://www.giaiphapexcel.com/diendan/threads/file-excel-tăng-dung-lượng-bất-thường.130258/#post-818077
DL của công ty, em không thể up lên được.
Cụ thể công thức chạy lâu là 49000 dòng :IF(COUNTIFS($B$7:B49616,B49616)>1,0,B49616)
Em có nói rõ là chỉ làm trên DL thô, có nghĩa là file mới, không có DL ẩn, toàn bộ là value, chạy 1 công thức là copy dán value
Vì máy này em mới sử dụng nên chưa quen. Em đang tính nhờ IT cài lại máy ( nhưng IT sẽ không rành về Exel) , vì cần làm BC gấp nộp mà máy thì...
nên em xin trợ giúp từ mọi người trước
Xin cảm ơn
 
Không dùng công thức tính toán, dùng VBA tính tất cả 1 lần và ghi giá trị (kết quả) vào sheet.
Thời gian chắc chỉ 1 "hơi" thuốc.
Em chạy công thúc cho 1 cột khoảng 50.000 dòng
Em không rành về VBA, chỉ mới tập tành, hôm trước có xin đc đoạn code (phóng to thu nhỏ hình trên exel) mà làm theo hướng dẫn thì chỉ xài đc trên máy của em, qua máy khác thì ko đc.
Em cũng ko rõ nguyên nhân, ko nắm được cái sườn cơ bản để thực hành theo.
Mong sư phụ giúp đỡ.
 
DL của công ty, em không thể up lên được.
Cụ thể công thức chạy lâu là 49000 dòng :IF(COUNTIFS($B$7:B49616,B49616)>1,0,B49616)
Em có nói rõ là chỉ làm trên DL thô, có nghĩa là file mới, không có DL ẩn, toàn bộ là value, chạy 1 công thức là copy dán value
Vì máy này em mới sử dụng nên chưa quen. Em đang tính nhờ IT cài lại máy ( nhưng IT sẽ không rành về Exel) , vì cần làm BC gấp nộp mà máy thì...
nên em xin trợ giúp từ mọi người trước
Xin cảm ơn
Dự đoán, có thể File trên dùng Conditional Formatting là nguyên nhân chính làm cho File chạy rất chậm.
 
Lần chỉnh sửa cuối:
DL của công ty, em không thể up lên được.
Cụ thể công thức chạy lâu là 49000 dòng :IF(COUNTIFS($B$7:B49616,B49616)>1,0,B49616)
Em có nói rõ là chỉ làm trên DL thô, có nghĩa là file mới, không có DL ẩn, toàn bộ là value, chạy 1 công thức là copy dán value
Vì máy này em mới sử dụng nên chưa quen. Em đang tính nhờ IT cài lại máy ( nhưng IT sẽ không rành về Exel) , vì cần làm BC gấp nộp mà máy thì...
nên em xin trợ giúp từ mọi người trước
Xin cảm ơn
Dùng hàm match thay thế xem được không. upload cấu hình máy lên nữa, máy dính virus thì hết chơi
 
DL của công ty, em không thể up lên được.
"DL" viết đầy đủ là "Du Lịch"?
Vì máy này em mới sử dụng nên chưa quen.
Câu này nghe quen quen... :D

-------
Mình tìm mọi cách úp cái file đang làm lên (nội dung trong file không nhất thiết là sự thật như quả cật con gà, không nhất thiết cần 1 triệu dòng mà chỉ cần 100 dòng thôi), nếu không thớt này thành thớt bói voi (thầy bói xem voi ấy)!!!
 
Em chạy công thúc cho 1 cột khoảng 50.000 dòng
Em không rành về VBA, chỉ mới tập tành, hôm trước có xin đc đoạn code (phóng to thu nhỏ hình trên exel) mà làm theo hướng dẫn thì chỉ xài đc trên máy của em, qua máy khác thì ko đc.
Em cũng ko rõ nguyên nhân, ko nắm được cái sườn cơ bản để thực hành theo.
Mong sư phụ giúp đỡ.
Không ai muốnlàm "sư phụ" ở GPE này đâu.
"DL của công ty, em không thể up lên được.
Cụ thể công thức chạy lâu là 49000 dòng :IF(COUNTIFS($B$7:B49616,B49616)>1,0,B49616)
"
Bạn chỉ cần gởi file có 1 cột B là có số liệu 50.000 dòng, rồi công thức muốn có 1 vài ô trong cột kết quả, có thể mọi người có cách làm ra kết quả bạn mong muốn bằng VBA xem tốc độ có cải thiện không. Bạn có quyền kiểm tra bằng công thức của bạn ở 1 dòng ngẫu nhiên trong 50.000 dòng dữ liệu của bạn.
Ai "ở không" mà tạo dữ liệu mẫu và làm hết mọi chuyện mà chưa chắc đúng với biểu mẫu dữ liệu của file bạn có.
 
Em gửi file lên ạ :"IF(COUNTIFS($B$8:B93811,B93811)>1,0,B93811)"
Chạy công thức hết cuối bảng.
Mục tiêu công thức là loại bỏ giá trị trùng trên bảng dữ liệu, vẫn giữ nguyên vị trí, để tính tổng có điều kiện. Nên không dùng "Remove duplicates", "Pivoit table"
Do cần làm báo cáo gấp nên em phải lảm thủ công, chạy công thức lần lượt từng đoạn 5000 dòng cho đến hết thì máy xử lý được.
Giờ có thời gian em làm file đơn giản gửi lên cho các anh chị xem. Còn cách nào khác để giải quyết trường hợp này không. cho em xin lần sau rút kinh nghiệm. Xin cảm ơn.
 

File đính kèm

  • file.xlsx
    1.2 MB · Đọc: 29
Lần chỉnh sửa cuối:
Không ai muốnlàm "sư phụ" ở GPE này đâu

"Sư phụ" là ý tôn trọng.
Chỉ cần nhận được hướng dẫn là đã cảm ơn lắm rồi. Chỉ cần nhập môn được là tốt. Mong người biết có thể chỉ cho người không biết để học hỏi thêm.
Xin lỗi nếu anh không thích em gọi như vậy.
 
Em gửi file lên ạ :"IF(COUNTIFS($B$8:B93811,B93811)>1,0,B93811)"
Chạy công thức hết cuối bảng.
Mục tiêu công thức là loại bỏ giá trị trùng trên bảng dữ liệu, vẫn giữ nguyên vị trí, để tính tổng có điều kiện. Nên không dùng "Remove duplicates", "Pivoit table"
Do cần làm báo cáo gấp nên em phải lảm thủ công, chạy công thức lần lượt từng đoạn 5000 dòng cho đến hết thì máy xử lý được.
Giờ có thời gian em làm file đơn giản gửi lên cho các anh chị xem. Còn cách nào khác để giải quyết trường hợp này không. cho em xin lần sau rút kinh nghiệm. Xin cảm ơn.
Chạy nặng đúng rồi, bạn lặp lại bao 93811 line mà bạn lặp lại theo cấp số thế thì có mà nhanh được cũng lạ.

vẫn giữ nguyên vị trí,

Vị trí nào cần giữ? nhìn như công thức của bạn là giữa nguyên cái đầu tiên tìm thấy, còn lại bị bỏ.
 
Đúng rồi ạ. Giá trị xuất hiện lần đầu thì lấy, để nhóm giá trị về 1,tính tổng 1 lần thôi, các giá trị còn lại thì bỏ qua không tính
 
Đúng rồi ạ. Giá trị xuất hiện lần đầu thì lấy, để nhóm giá trị về 1,tính tổng 1 lần thôi, các giá trị còn lại thì bỏ qua không tính
Cách 1: dùng công thức này nhanh hơn chút
IF(MATCH(B8,B$7:B8,0)=ROW()-6,B8,0)

Cách 2: Copy cột B ra VALUE rồi rùng remove duplicate (loại dữ liệu trùng) là xong

Cách3: Lấy duy nhất bằng pivot table

Cách2, Cách 3 nhanh, cách 1 giống cách đang làm dễ hiểu
 
Cách 1: dùng công thức này nhanh hơn chút
IF(MATCH(B8,B$7:B8,0)=ROW()-6,B8,0)

Cách 2: Copy cột B ra VALUE rồi rùng remove duplicate (loại dữ liệu trùng) là xong

Cách3: Lấy duy nhất bằng pivot table

Cách2, Cách 3 nhanh, cách 1 giống cách đang làm dễ hiểu
Oh. Cảm ơn bạn. Cách 1 có khả thi. HÀm match ít dùng nên ko nghĩ ra vận dụng kiểu này. Mai mình lên cty kiểm tra xem có chạy được ko.

=> Đã làm=> hàm match chạy nhanh hơn rất nhiều=> Thanks bạn ^^

Cách2, 3 mình biết nhưng ko dùng đc trong trường hợp này.
Thanks bạn nhìu.
 
Lần chỉnh sửa cuối:
Cho mình xin cách làm với. File này mình có kết quả rồi. Mình xin để ứng dụng cho dữ liệu khác.
Cảm ơn bạn.
Vì vấn đề bản quyền nên mình không tiện tiết lộ cách làm. Mình chỉ khuyên bạn nên học vba vì việc xử lý dữ liệu lớn với công thức excdl rất vất vả.
 
tạo một cột phụ nhập giá trị từ 1 tới n ( phục vụ backup vị trí)

Sort dữ liệu lại theo cột B.

tại F10, chẳng hạn nhập ciong thức if(b10<>b9,b10,0)

sau đó tính tổng theo cột f. bảo đảm tốc độ cực nhanh nhưng hơi thủ công.
 
tạo một cột phụ nhập giá trị từ 1 tới n ( phục vụ backup vị trí)

Sort dữ liệu lại theo cột B.

tại F10, chẳng hạn nhập ciong thức if(b10<>b9,b10,0)

sau đó tính tổng theo cột f. bảo đảm tốc độ cực nhanh nhưng hơi thủ công.
Quên bước cuối là sort lại.
 
Web KT
Back
Top Bottom