Tối ưu code lọc và xóa dữ liệu trùng lặp hàng loạt

Liên hệ QC

letienmai

Thành viên hoạt động
Tham gia
16/7/14
Bài viết
146
Được thích
45
Xin chào mọi người
Do kiến thức lập trình VBA còn hạn chế cụ thể về Array hoặc Dictionary nên xin nhờ anh/chị đoạn code để tăng tốc độ xử lý với dữ liệu từ 20.000 dòng trở lên, hiện tại code mình đang viết mất tầm 10s để xử lý ở cấu hình máy vừa phải, tuy nhiên với file mình gửi lên thì đã được lượt bỏ tất cả các sheet không liên quan. các bước thủ công mình đang làm là:
- Đầu bài: lọc các lệnh sản xuất [Cột H-Sheets("BB_SANXUAT")] thực tế sản xuất trong mỗi ngày của tất cả công đoạn trong dây chuyền sản xuất (có gần 10 công đoạn)
+ B1: Lọc theo ngày báo cáo Cột C-Sheet2
+ B2: Tạo dữ liệu phụ các công đoạn ở Sheet10.Range("V10:AF10")
+ B3: Sử dụng vòng lặp For Next để lọc theo tên công đoạn
+ B4: Sau khi lọc copy các giá trị hiển thị
+ B5: Dán vào Sheets("BC_NGAY")
+ B6: Xóa các giá trị trùng lặp
+ B7: Sắp xếp theo thứ tự nhỏ đến lớn
+ B8: Copy dữ liệu phụ, dán vào vùng cần thể hiện báo cáo
+ B9: ClearContents giá trị ở dữ liệu phụ.
+B10: Kết thúc
Rất mong nhận được sự trợ giúp từ tất cả anh/ chị để code xử lý được nhanh và không bị treo máy.
Xin chân thành cám ơn.
 

File đính kèm

  • Tro giup.xlsb
    289.7 KB · Đọc: 36
Kính gửi anh @HieuCD cùng các anh/chị
Sau khi anh trợ giúp code em có mài mò viết lại theo chiều dọc của cột, hiện tại em đang vướng làm sao gom các kết quả lại vào một ô, em có sử dụng hàm join nhưng do trình độ còn non kém nên chạy cứ bị lỗi.
Rất mong anh cùng các a/c quan tâm giúp đỡ.
Xin cám ơn.
View attachment 264241
Ở đây cũng hỏi về "LSX số" có vẻ y chang bạn
 
Upvote 0
Xin chào mọi người. . .
- Đầu bài: lọc các lệnh sản xuất [Cột H-Sheets("BB_SANXUAT")] thực tế sản xuất trong mỗi ngày của tất cả công đoạn trong dây chuyền sản xuất (có gần 10 công đoạn)
+ B1: Lọc theo ngày báo cáo Cột C-Sheet2
+ B2: Tạo dữ liệu phụ các công đoạn ở Sheet10.Range("V10:AF10")
+ B3: Sử dụng vòng lặp For Next để lọc theo tên công đoạn
. . . . . .
Mình xin chưa nói về code sẽ như thế nào,, mà sẽ nói liên quan đến thiết kế CSDL vĩ đại thật sự của bạn
Thứ nhất bạn đang thiếu (các) bảng danh mục; Đầu tiên theo mình là bạn nên xây dựng danh mục này:

TTCong doan
1TSTạo sợi
2DVDệt vải
3IAIn ấn
4CMCắt may
5TTThổi túi
6LBLồng bao
7ThTái sinh
8XHXuất hàng
9GMGhép màng
10MMMay miệng
11TrTráng trắng

Danh mục này sẽ giúp nhiều cho bạn đỡ sai chính tả ngớn ngẫn khi nhập liệu vô cột 'Cong Doan' (bằng ComboBox)
& nó sẽ làm giảm đáng kể nào đó dung lượng file của bạn.
Nó cũng sẽ đem đến cho bạn ích lợi trong việc xử lý CSDL của bạn bỡi công cụ mà bạn hay ai đó sắp giúp bạn để cho ra kết quả được nhanh hơn.
& cũng từ đây, bạn xét đến có thể tạo danh mục cho các tên máy cho bạn được không?

Thêm 1 lưu ý nho nhỏ là 1 khi ta có hơn 30 tên máy dệt, thì đánh số 9 máy dệt đầu lại cần phí phạm 1 chút, đó là Máy 01,. . . . máy 09
Cái phí phạm này là cần thiết, nhất là làm việc trong Excel tài lanh.

Một vấn đề nữa mình xin được nói luôn về nút bấm chọn ngày báo cáo của bạn; Nó đang không hay ở chỗ là từ ngày đầu, muốn chuyển đến ngày cuối là trần ai khoai củ: Chi bằng ta làm 2 ComboxBox, 1 cái chọn tháng & 1 cái chọn ngày; Còn trị của năm ta nhét sẵn vô 1 ô trống nào đó để xài cho cả 365 ngày cho đã nư!

Rất vui nếu được trao đổi tiếp cùng bạn nay mai!
 
Lần chỉnh sửa cuối:
Upvote 0
Web KT

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

Back
Top Bottom