Giúp về code bảng chấm công (1 người xem)

Liên hệ QC

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

Trước hết xin góp vài í với bạn vế cấu trúc CSDLqQQ

(1) Những điều nên tránh:

(*1) Không nên tô màu nguyên cả dòng hay cột! Chỉ nên tô màu những ô có dữ liệu mà thôi;
Thậm chí, chỉ nên tô các tên trường mà thôi;

(*2) Bạn hiện có 2 Names, & cơ quan bạn hiện có ~ 400 người, vậy mà bạn đã giành sẵn chổ cho hơn 65500 người, thật khó tưởng tượng nổi với bạn; Càng kinh khủng hơn, đó là số tổ của bạn cũng bằng từng í số lượng, thật hết biết với bạn luôn!

Thế này đi: Bạn mở file lên & ghi lại số byte; Sau đó bạn thực hiện như (*1) & Ở (*2) bạn ấn định trước số CNV cỡ 999 ng ười & 150 tổ;
Thực hiện lưu file;

(2) Những điều nên thực hiện:

(1*) Đem DS (danh sách) tên tổ đang ở trang 'To' về trang 'dsNV' (tại cột 'AA' trở đi)

(2*) (Cái này chỉ là tạo thói quen tốt, không làm cũng không sao) Bên cạnh DS tổ ta nên có DS mã tổ; Khi đó dữ liệu trong hầu hết CSDL của bạn chổ nào thay vì tên tổ sẽ là mã tổ.
Lúc cần thiết thể hiện tên tổ, ta dùng VLOOKUP();

(3*) Đây mình cho là điều quan trọng nhứt mình muốn viết cho bạn, đó là cấu trúc trang tính mà hiện giờ bạn chưa gán tên (Sheet1)
Đầu tiên nói về nhiệm vụ của nó mà bạn sắp giao cho nó sẽ là những gì?
Ngoài việc ghi lại ngày giờ công từng người trong CQ, nó còn nhiệm vụ gì khác nữa không?
Như Tổng hợp ngày & giờ công; Thống kê số đi muộn, về sớm & số ngày nghỉ của nhân viên. . . . ???

Tạm thế này & chờ tin từ bạn!
 
Upvote 0
Upvote 0
(2) Em bắt gặp vấn đề này cũng giống ý em - http://www.giaiphapexcel.com/forum/showthread.php?8640-C%C3%A1ch-nh%E1%BA%ADp-d%E1%BB%AF-li%E1%BB%87u-trong-Excel-b%E1%BA%B1ng-form-t%E1%BB%B1-t%E1%BA%A1o
(1) Vấn đề em cần giúp là: Khi nhập liệu ở sheet ChamCong thì nó sẽ ‘cập nhật’ sang sheet1 (vdụ: bắt buộc ở sheet1 phải có đủ 300 hay 400 Bảng giờ công chi tiết của mỗi Nhân viên)

(1) Chép qua là chuyện nhỏ bạn à!
Chuyện bự hơn đó là cấu trúc trang tính đích fải như thế nào, để còn chép cho vừa lòng nhau; Ở đây ta không thể bê nguyên si trang 'ChamCong' sang trang mà mình tạm gọi là 'THCong'

(2) Bạn đưa lên đường dẫn đến 1 topic có hàng hà sa số bài, vậy biết bài nào mà lần đây bạn?

Mình thử 1 trong 2 cấu trúc theo mình là fải vậy; Bạn xem & cho í kiến để còn chỉnh sửa, nhe!

Thân ái!
 

File đính kèm

Upvote 0
Mình cũng nghĩ là nên tạo một cấu trúc dữ liệu ở sheet lưu. Tuy nhiên mình đề nghị nên dùng cấu trúc như thế này:

MSNV, Ngày, In01, Out01, In02, Out02
NV01,10/03/2012,8:00,16:50,18:00,6:00

Như vậy thì đáp ứng được yêu cầu lấy dữ liệu lại qua bảng chấm công.

Mình có thể tạo một nút bấm Cập nhật. Khi bấm nút này, nếu đã có dữ liệu thì mang sang và tiếp tục cập nhật. Còn chưa có thì sẽ là những ô trống.

Mình có thể tạo mỗi tháng một file hoặc một năm một file, như vậy mình chọn tháng sẽ copy dữ liệu của tháng thôi. Mình cũng nên để ý ràng buộc dữ liệu của ngày phải đúng tháng.

Đây là ý kiến về giải pháp, việc viết VBA cho giải pháp này không khó.
 
Upvote 0
Cách của SOLOMON giống như nối tiếp các bảng số liệu của từng cá nhân thành của CQ

Vấn đề tiếp theo sau khi chép sẽ là gì mới quan trọng & quyết định đến cấu trúc trang 'Lưu';
Nếu từ 'Lưu' cần chuyển sang bảng chấm công truyền thống thì mất thêm 1 công đoạn nữa.
Còn từ 'Lưu' mà đem tổng hợp công để tính lương sẽ là trần ai & khó kiểm soát tính đúng đắn!
 
Upvote 0
(1) Chép qua là chuyện nhỏ bạn à!
Chuyện bự hơn đó là cấu trúc trang tính đích fải như thế nào, để còn chép cho vừa lòng nhau; Ở đây ta không thể bê nguyên si trang 'ChamCong' sang trang mà mình tạm gọi là 'THCong'

(2) Bạn đưa lên đường dẫn đến 1 topic có hàng hà sa số bài, vậy biết bài nào mà lần đây bạn?

Mình thử 1 trong 2 cấu trúc theo mình là fải vậy; Bạn xem & cho í kiến để còn chỉnh sửa, nhe!

Thân ái!
Làm theo kiểu này cũng tạm được. Nhưng ‘dài quá’, vì bên em cần in Bảng chi tiết Giờ công của mỗi nhân viên Nên em muốn nó có form cũng giống sheet – cham cong. Em sẽ in vừa trên khổ A4 cắt đôi. Mỗi file em sẽ lưu cho 1 năm.
Hỏi: theo cách của anh thì làm hết tháng mới cho cập nhật. Trường hợp nhập giờ công được vài ngày thì ‘cập nhật’ có được không???
Kính nhờ anh chị em cố gắng giúp em với
 
Upvote 0
. . .Vì bên em cần in Bảng chi tiết Giờ công của mỗi nhân viên Nên em muốn nó có form cũng giống sheet – cham cong. Em sẽ in vừa trên khổ A4 cắt đôi. Mỗi file em sẽ lưu cho 1 năm.

Form in này có giống với 'ChamCong' về hình dạng & nội dung hay không vậy?
Nếu khác xa thì bạn fải đưa form í lên xem mặt mũi nó ra răng?! Có khi fải lấy 1 trang tính nữa để làm form in cũng nên.

& Bạn hãy cho biết trang (mà SOLOMON gán tên là 'Lưu') bạn sẽ dùng làm việc gì tiếp theo với nó?

Hỏi: theo cách của anh thì làm hết tháng mới cho cập nhật. Trường hợp nhập giờ công được vài ngày thì ‘cập nhật’ có được không???
Thì việc này bạn có thể thử ên biết liền hà! Chỉ có điều, khi cập nhựt lần thứ 2 thì có chuyện;
Nếu bạn muốn cập nhựt nhiều lần trong tháng thì đổi vài dòng lệnh trong macro đó, cũng không fức tạp lắm. Quan trọng là bạn mô tả công việc để cùng nhau hiểu rõ & thực hiện hay khuyến cáo với bạn những điểm cần thiết.

Kính nhờ anh chị em cố gắng giúp em với
Bạn cần giúp việc gì thêm nào?
 
Upvote 0
Tui hổng phải kế toán, tui thấy Lưu là lưu, mà In là in. Mắc chi "lôn xộn".
Sheet<ChamCong> nhập xong ấn Lưu.
Sheet<InLuong> chọn tháng năm xong, chọn MaNV rồi in.
Lưu cả năm luôn nếu 65.536 dòng chứa đủ.
Chưa có dữ liệu nhiều đủ để thử.
 

File đính kèm

Upvote 0
Thầy Ba Tê làm zậy không có đặng à nha!

Tác giả iêu cầu khổ giấy A5, BTê lại làm nguyên A4 là chưa tiết kiệm;

Vã lại khi xưa, fiếu lương CQ mình còn in trên A6 vẫn OK kia; & nội dung khác xa với 'Fiếu lương' của thầy BTê

& Tất nhiên chúng ta nên chờ nội dung fiếu lương của CQ bạn í. Nếu không sẽ là công cốc.
 
Upvote 0
Em cám ơn các Anh chị đã nhiệt tình giúp đỡ. Em làm thử nếu có gì sẽ báo cáo lại anh chị nhe
Có cách nào ‘càng tiết kiệm’ phiếu lương không anh chị?
 
Lần chỉnh sửa cuối:
Upvote 0
Nhờ giúp em file này nhe

Em gửi lại file chấm công nhờ anh chị em thiết kế giúp em nhe
 

File đính kèm

Upvote 0
Riêng về trang tính 'Luu'

Bạn đang nhập theo hàng; nếu 1 tháng có 30 ngày, bạn sẽ fải xài:
5 (cột) * 400 (người) * 30 ô để chứa dữ liệu;

Trong khi quản lý theo cột bạn chỉ cần: (4 * 30 + 1) * 400 ô để chứa dữ liệu.
 
Upvote 0
Bạn đang nhập theo hàng; nếu 1 tháng có 30 ngày, bạn sẽ fải xài:
5 (cột) * 400 (người) * 30 ô để chứa dữ liệu;

Trong khi quản lý theo cột bạn chỉ cần: (4 * 30 + 1) * 400 ô để chứa dữ liệu.

Riêng về trang tính 'Luu'

Bạn đang nhập theo hàng; nếu 1 tháng có 30 ngày, bạn sẽ fải xài:
5 (cột) * 400 (người) * 30 ô để chứa dữ liệu; === vì cần in ra Bảng chi tiết Giờ công cho nhân viên xem nên em muốn dùng kiểu này (giấy A5)

Trong khi quản lý theo cột bạn chỉ cần: (4 * 30 + 1) * 400 ô để chứa dữ liệu === Theo kiểu này thì in khổ Giấy nào được???
 
Upvote 0
Liệt kê những ấn fẩm liên quan đến lương, gồm

(*) Bảng tổng hợp lương của các tổ trong 1 tháng; (A3)
(*) Fiếu lương từng cá nhân; (A5)
(*) Bảng tổng hợp lương toàn CQ; (A3)
(*) Bảng chấm công của các tổ (. . .); (A3 hay A4)
(*) Danh sách tiền thưởng tháng, quí,. . . (nếu có & là A4);
(*) Danh sách mừng sinh nhật; (Nếu CĐoàn iêu cầu);
(*) Các báo cáo theo iêu cầu của các cấp có thẩm quyền;

'Trang 'Lưu' in ra làm gì vậy bạn? Theo mình thì trang này làm cảnh & để coi mà thôi! Nó làm căn cứ để làm ra bảng tổng hợp lương hàng tháng của các tổ;
(Nhiều nơi bảng tổng hợp lương tháng là fần sau của bảng chấm công (theo cách truyền thống); Chuyện về bảng chấm công này, Nhà nước ta đã b an hành mẫu sẵn rồi í chứ! Trong nớ chi tiết còn qui loại công nữa cơ; Như Ro, CÔ, Rc, F, X, . . . .

Tóm lại vấn đề là thế này:

1 CSDL thường có 4 thành tố chính sau đây:

(A) Nơi lưu dữ liệu nhập vào; Nó là các trang không thể thiếu của 1 CSDL
(B) Các trang trung gian rút trích từ fần nhập bên trên theo tiêu chí nào đó, . . . (Thường để xem hay kiểm tra, chỉnh sửa tức thời 1 hay 1 nhóm record của CSDL)
(C) Các báo cáo đầu ra của CSDL
(D) Các bảng fụ trợ (Như Mã ĐVị, Mã Chức vụ, Mã quan hệ (bố, mẹ, hay con,. . . ), Mã tổ nếu rất chi nhiều tổ,. . . . .


. . . . .

Thân.
 
Upvote 0
'Trang 'Lưu' in ra làm gì vậy bạn? Theo mình thì trang này làm cảnh & để coi mà thôi! Nó làm căn cứ để làm ra bảng tổng hợp lương hàng tháng của các tổ;
Đơn vị mình Bảng giờ công nhập bằng tay. Mổi tháng in ra đưa nhân viên ‘tự dò và kiểm tra sai sót’
Mỗi tháng bên mình phải Lưu Bảng giờ công này Vì vậy em mới nhờ các anh chị thiết kế dùm em làm sao ‘nó không bị mất’ bảng chấm công của từng nhân viên
 
Lần chỉnh sửa cuối:
Upvote 0
(1) Chép qua là chuyện nhỏ bạn à!
Chuyện bự hơn đó là cấu trúc trang tính đích fải như thế nào, để còn chép cho vừa lòng nhau; Ở đây ta không thể bê nguyên si trang 'ChamCong' sang trang mà mình tạm gọi là 'THCong'

(2) Bạn đưa lên đường dẫn đến 1 topic có hàng hà sa số bài, vậy biết bài nào mà lần đây bạn?

Mình thử 1 trong 2 cấu trúc theo mình là fải vậy; Bạn xem & cho í kiến để còn chỉnh sửa, nhe!

Thân ái!

Sheet ‘THCong’ hình như bị lỗi – nhân viên ở cột TT số 2 trống cột : I – L ; AK – AN
TT từ 3 -> 17 : cột : BI trở về sau
Mỗi lần ‘cập nhật’ sao không mất số liệu ở sheet ChamCong
Mỗi lần ‘cập nhật’ sao không mất số liệu ở sheet ChamCong
Lý do tại sao vậy anh
 

File đính kèm

Lần chỉnh sửa cuối:
Upvote 0
(1) Sheet ‘THCong’ hình như bị lỗi – nhân viên ở cột TT số 2 trống cột : I – L ; AK – AN
TT từ 3 -> 17 : cột : BI trở về sau

(2) Mỗi lần ‘cập nhật’ sao không mất số liệu ở sheet ChamCong
Lý do tại sao vậy anh
(3) Muốn bổ sung/sửa đổi công xá của người nào đó trong tháng

(1) Cột 'BI' trở về sau trống điều đó có nghĩa là macro không đếm xỉa đến các dữ liệu sau dòng trống tại trang 'ChamCong' (vì ai đó đã xoá ô [A18] đi rồi! (Có những tháng không có ngày 31, có thể có tháng không có ngày 30; Nhưng nhất thiết fải có ngày 15 chứ bạn). Bạn điền đầy ngày này hàng tháng là sẽ được.

(2) Macro chưa có lệnh xóa dữ liệu cũ; giờ bạn có thể thêm 1 dòng lệnh như dưới đây (dòng lệnh có mũi tên):
PHP:
Option Explicit
Const SoNV As Integer = 500
Private Sub CommandButton1_Click()
 Dim Sh As Worksheet, Rng As Range, sRng As Range
 Dim Rws As Long, Col As Byte
 
 Set Sh = ThisWorkbook.Worksheets("THCong")
 Set Rng = Sh.[b3].Resize(SoNV)
 Set sRng = Rng.Find([A1].Value, , xlFormulas, xlWhole)
 If sRng Is Nothing Then
    With Sh.Cells(SoNV, "B").End(xlUp).Offset(1)
1 'Ghi Fàn Chung:'
        .Resize(, 2).Value = [A1].Resize(, 2).Value
        .Offset(, 2).Value = [f1].Value
        .Offset(, 128).Value = [B36].Value      '"Tre Sáng"'
        .Offset(, 129).Value = [D36].Value
        .Offset(, 130).Value = [F36].Value     '"Só Ngày Nghi"'
        .Offset(, 131).Value = [F37].Value      '"Tg Giò Cg"'
        Rws = .Row
    End With
2 'Ghi Giò Cong Các Ngày:'
    For Each sRng In Range([A4], [A4].End(xlDown))     '*'
    Col = 1 + 4 * Day(sRng.Value)
    Sh.Cells(Rws, Col).Resize(, 4).Value = sRng.Offset(, 1).Resize(, 4).Value
    Next sRng
    Randomize
    [A1].Interior.ColorIndex = 34 + 10 * Rnd() / 1
    Range("B4:E34").ClearContents    '<=|'
 Else
    MsgBox "Nguòi này Da Có Nhap!", , "GPE Xin Chào!"
 End If
End Sub

(3) Ta có thể thêm 1 macro khác để chuyên làm việc này; Nhưng chỉ sau khi bạn thử thực hiện 2 điểm trên trót lọt!

(húc thành công!
 
Upvote 0
Sheet ‘Thcong’ chập nhật giờ kg đúng từ sheet ‘chamcong’
Nhờ anh chị kiểm tra dùm em nhe
Em cám ơn nhiều lắm
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom