Nhờ hoàn thiện Bảng tính lương

Liên hệ QC
"Số dòng có lẽ chưa quan trọng bằng cột!"

Anh à, em muốn hỏi thế vì dòng tổng cộng của em là 147, em không muốn bị macro xoá dòng này, mà trong code của anh là xoá đến dòng 247. Rất mong anh giúp đỡ.
Chân thành cảm ơn anh!
 
Anh à, em muốn hỏi thế vì dòng tổng cộng của em là 147, em không muốn bị macro xoá dòng này, mà trong code của anh là xoá đến dòng 247. Rất mong anh giúp đỡ.
Mã:
 For Thg = 0 To 12              '<=|'
   Cells(3, 4 + Thg * 7).Resize([B65500].End(xlUp).Row + [B]99[/B], 4).ClearContents
 Next Thg

Như vậy là ô cuối của cột 'B' có dữ liệu đang là: 247 - 99 (=>148)

Biết vật thôi, chứ muốn chừa dòng 147 không xóa thì thay dòng lệnh đó như sau:
PHP:
 For Thg = 0 To 12              
   Cells(3, 4 + Thg * 7).Resize(143 , 4).ClearContents
 Next Thg
Nhưng phải chú ý về sau, khi phải tằng giảm số records;

Mình nêu 1 cách dung hòa như sau:

Chuyển dòng tổng cộng này đến dòng 200;
Sau khi thực hiện xong macro , bằng dòng lệnh thêm vô macro hay bằng tay ta ẩn các dòng không có dữ liệu trên dòng thứ 200 ấy đi
thí dụ:
PHP:
    Rows("148:198").EntireRow.Hidden = True
 
Các anh, chị ơi, bảo trì giúp em với. File nó chạy ì ạch quá mà công thức thì cũng không nhiều lắm.
Em vừa thử số lượng 5000 dòng thì không chạy được nữa, treo máy luôn
 
Lần chỉnh sửa cuối:
Chỉ gọi đích danh cũng có khi không hay lắm đâu nha!

Các anh & . . . ơi, bảo trì giúp em với. File nó chạy ì ạch quá mà công thức thì cũng không nhiều lắm.
Em vừa thử số lượng 5000 dòng thì không chạy được nữa, treo máy luôn

Thế nào mà nói công thức không nhiều; Cứ coi như 1 ô có công thức là 1 dòng lệnh macro đi; Vậy bạn có bao nhiêu cái macro trong đó (Mình cho rằng macro thường chứa khoảng 25-30 dòng lệnh.
Cái CSDL của bạn, theo mình có mấy vấn đề lớn nhỏ như sau:

(*) Mã nhân viên quá dài; theo mình chỉ 4 cùng lắm 5 ký tự là đủ rồi;
(*) Ở trang 'ThamChieu' dư quá nhiều trường, nhất là 2 trường [CR_NAME] & trường [ACCOUNT] (Ở đây chỉ cần để 1 trường ]ACCOUNT] mà thôi;
(*) Trang 'TH' thay vì 12 tháng, trên nó chỉ là 1 tháng thôi;
Macro sẽ tìm số liệu của tháng đó cho vô form là được;
Theo mình bạn cần tham khảo thêm về CSDL một tí gọi là:
(*) Tuy thừa có thừa, nhưng vẫn thiếu vẫn thiếu; Bạn còn thiếu nơi lưu danh sách CNVC hiện tại & đã nghỉ hưu, nghỉ việc, . . .

Để bài bản hơn, bạn nên cùng mọi người cùng đưa ra mô hình quản lý tối ưu mới mong tiện;

Hồi xưa cơ quan mình cũng gầm ngàn người lương khoán sản phẩm tập thể mà làm lương hàng tháng vẫn bình thường

Mình vẫn khuyên bạn từ bỏ các hàm - công thức VLOOKUP() đó đi; giao thứ ấy cho macro nó làm!

Thân ái!
 
Chỉ gọi đích danh cũng có khi không hay lắm đâu nha!
--=0, em sẽ rút kinh nghiệm lần sau. Em biết là trên diễn đàn có rất nhều cao thủ và rất nhiều người nhiệt tình giúp đỡ nhưng tại vì cái này anh giúp em từ đầu rồi nên anh hiểu nhất.
Thôi thì mong anh và mọi người xem có giải pháp nào giúp em với. Em rất thán phục nhiều thành viên trên diễn đàn, trên thông thiên văn, dưới tường địa lý, gi gỉ gì gi, cái gì cũng biết--=0, ví như Anh SA_DQ, hoangdanh282vn, huuthang_BD.... Nên bây giờ em cũng down rất nhiều tài liệu hướng dẫn về VBA để in ra học tập đây. Hy vọng đến 1 ngày nào đó sẽ không phải làm phiền các bác nữa.
 
Lần chỉnh sửa cuối:
Nếu là tôi thì tôi làm thế này.
 

File đính kèm

Mình chưa hiểu về cách làm của Hữu Thắng, bạn có thể hướng dẫn qua cho mình được không? Mấu chốt vấn đề ở đây chắc là dùng Pivot. Nhưng mình lại không biết gì về Pivot. Rõ ràng mình vào VBE thì thấy có 3 Sheet mà ra ngoài tìm thỉ chẳng thấy cái Sheet!Pivot đâu cả. Hoặc bạn có thể cho mình đường link hướng dẫn về Pivot được không? Cảm ơn bạn nhiều!
 
Mình chưa hiểu về cách làm của Hữu Thắng, bạn có thể hướng dẫn qua cho mình được không? Mấu chốt vấn đề ở đây chắc là dùng Pivot. Nhưng mình lại không biết gì về Pivot. Rõ ràng mình vào VBE thì thấy có 3 Sheet mà ra ngoài tìm thỉ chẳng thấy cái Sheet!Pivot đâu cả. Hoặc bạn có thể cho mình đường link hướng dẫn về Pivot được không? Cảm ơn bạn nhiều!
Bạn vào VBE, chỉnh property mục visible của sheet pivot lại -1 để xem sheet pivot. Cách làm thì đơn giản thôi tôi nghĩ bạn tự mò chắc cũng ra. Tôi đang sử dụng Excel 2007, quên mất trên giao diện Excel 2003 nó như thế nào rồi nên ko hướng dẫn cụ thể được.
 
Sáng hôm qua mình tra google nên đã làm được rồi. Lần đầu tiên mình mới tiếp xúc với Pivot, thấy hay thật. Ứng dụng để lọc chi tiết rất hay (Mình mới biết đến ưu điểm, không biết nhược điểm của nó là gì vậy bạn?!). Công thức Hữu Thắng làm giúp mình chạy "ngon" lắm! Mình thử dữ liệu đến 5000 dòng nhưng cũng chỉ roẹt 1 cái là xong. Cám ơn Hữu Thắng nhiều nha!
 
Sáng hôm qua mình tra google nên đã làm được rồi. Lần đầu tiên mình mới tiếp xúc với Pivot, thấy hay thật. Ứng dụng để lọc chi tiết rất hay (Mình mới biết đến ưu điểm, không biết nhược điểm của nó là gì vậy bạn?!). Công thức Hữu Thắng làm giúp mình chạy "ngon" lắm! Mình thử dữ liệu đến 5000 dòng nhưng cũng chỉ roẹt 1 cái là xong. Cám ơn Hữu Thắng nhiều nha!
Tôi nghĩ nhược điểm lớn nhất của Pivot là không lập công thức tính trực tiếp trên Pivot được. Vì vậy tôi mới làm một bảng Pivot phụ và truy suất dữ liệu từ Pivot đó.
 
Web KT

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

Back
Top Bottom