Hàm chấm công

Liên hệ QC

handung107

Thành viên gắn bó
Thành viên danh dự
Tham gia
30/5/06
Bài viết
1,630
Được thích
17,440
Nghề nghiệp
Bác sĩ
Lê Văn Duyệt​

Vấn đề:

Ở một số công ty, nhà máy nhỏ việc chấm công thông thường được thực hiện trên Excel. Qua trao đổi tôi thấy rằng đa số khi nhân viên có đi làm thì sẽ được chấm là X , nghĩ phép là P , ...vv. Sau đó sẽ sử dụng một số hàm trong Excel để tính số ngày công trong một tháng của nhân viên. Tôi nghĩ rằng thông thường số ngày làm việc sẽ nhiều hơn số ngày nghĩ, nếu chấm công như trên nghĩa là bạn phải nhập vào bảng tính Excel nhiều hơn nếu bạn chỉ nhập vào những ngày nghĩ của nhân viên ấy. Giả sử rằng trong một ngày nhân viên nghĩ phép ½ ngày, sau đó do nhu cầu công việc yêu cầu họ tăng ca 3 tiếng thì công việc chấm công sẽ như thế nào. Tôi thấy một số nơi sẽ đưa việc chấm tăng ca qua một sheet khác, hay bảng dữ liệu khác...Hoặc có những ngày thì tính công nhật (công thời gian), có những ngày tính theo năng suất...thì bạn phải làm như thế nào. Tôi nghĩ ở một số công ty việc chấm công sẽ rắc rối hơn như trên vì hiện nay ở một số công ty có cả công nhân thời vụ và công nhân chính thức,...!

Vâng, vấn đề chắc chắn là rắc rối. Ở đây tôi không có tham vọng giải quyết tất cả các vấn đề trên. Tôi chỉ muốn đưa ra hàm chấm công để cho công việc chấm công dễ dàng hơn.
 
Gõ tay thì đau cần macro đâu, ai có cách nào hay ko vậy?
 
Upvote 0
Nhưng có điều tôi muốn thay các ký hiện chấm công để thuận tiện như:
Bỏ dấu ":", ví dụ 12;2d1;4t1, được hiểu là: có 12 giờ làm việc, trong đó 2 giờ làm đêm có phụ cấp 30% (ngoài ra còn có mức 35% là d2), 4 giờ làm thêm mức 150% (ngoài ra có mức 200% là t2).
Làm sao chỉnh đoạn code của anh làm được điều này. Cám ơn nhiều.
Mình cũng muốn xem thử hàm này như thế nào, nhưng vừa mở ra đã báo lỗi (Hình như khai báo không tường minh). Đành chờ vậy thôi!!$@!!
 
Upvote 0
Trong một số doanh nghiệp, ngoài việc ngày chủ nhật ko làm việc thì ngày thứ 7 chỉ làm việc có nửa ngày vào buổi sáng, khi đó cách tính trong công thức mà anh chị trình bày ở trên sẽ khác ko? Mong các anh chị chỉ bảo cho đàn em biết với!
Thanks.
 
Upvote 0
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
ai lam on cho 1 1 bang cham cong hoan chinh cho minh de hieu cai. chu the nay kho hieu qua cac ban oi

làm ơn cho ví dụ cụ thể cho mình hiểu sâu hơn chút. thế này khó hiểu quá
 
Chỉnh sửa lần cuối bởi điều hành viên:
Upvote 0
Muốn xin bảng chấm công về

a ơi, em thấy mẫu chấm công đó của a rất hay em muốn xin về để áp dụng. có được không anh. nếu được a gửi file qua mail này cho em nha leduyen2887@gmail.com. Em cám ơn anh nhiều lắm
 
Upvote 0
a kllsometime ơi a có thể cho em xin file chấm công đó được không. Vì số lương nhân viên bên e nhiều quá mà em lại mới làm nên không giỏi lắm về excel. Nếu được a gửi mail này cho em nha leduyen2887@gmail.com
Cám ơn anh nhiều lắm.
 
Upvote 0
em cũng muỗn xin một bảng chấm công mẫu thật dễ hiếu.Ai đó có thì vui lòng gửi qua địa chỉ :kimhoapk@gmail.com
cho em với, Thanks
 
Upvote 0
Sẽ rất dễ hình dung nếu huynh gửi kèm file đính kèm...
 
Upvote 0
Cam on handung107 minh muon tao cong thuc tinh nhap truoc xuat truoc ma ko biet lap trinh ra sao mong ban giup minh nhe
neu co cao thu nao biet thi giup minh theo vukhacdiepssc@gmail.com xin cam on
 
Lần chỉnh sửa cuối:
Upvote 0
Em cũng chưa hiểu lắm vì cách tính công, hình như bắt buộc phải biết VBA, trường hợp có công ty làm nửa ngày thứ 7 thì sao, hoặc nhân viên chỉ nghỉ nửa ngày thì tính như nào ạ,nếu ngày nghỉ lễ theo quy định của nhà nước trùng với ngày thứ 7 và chủ nhật thì tính công trong trường hợp nghỉ bù Excel có hiểu không ạ?!
 
Upvote 0
Sau đó bạn bạn copy đoạn mã hàm chấm công sau vào trong module của bạn.
Mã:
Public Function Chamcong(ByVal Khoang As Range, ByVal Chucnang As String) As Single 
Dim Socot As Integer, Sohang As Integer 
Dim i As Integer, j As Integer, k As Integer 
Dim Btotal As Single 
Dim Bgiatriso As Single 
Dim Bchucnang As String 
Dim SoLoai As Byte ' Bien nay nham xac dinh so loai ngay nghi, tang ca... trong mot chuoi
Dim BChuoi As clsString 
Dim BGiatri 
On error resume next 
'Xac dinh so cot trong bien Khoang
Socot = Khoang.Columns.Count 
'Xac dinh so hang trong bien Khoang
Sohang = Khoang.Rows.Count 
' Nham bao dam so sanh dung ta dung ham UCase
Chucnang = UCase(Chucnang) 
'Duyet qua cac cell trong bien Khoang
For i = 1 To Sohang 
For j = 1 To Socot 
BGiatri = Khoang.Cells(i, j).Value 
BGiatri = Trim(BGiatri) 
' Bat dau xu ly bgiatri qua Class clsString
Set BChuoi = New clsString 
BChuoi.Text = BGiatri 
'Ky tu de phan cach cac Chuc nang
BChuoi.Delimiter = ";" 
'Xac dinh so Chuc nang trong 1 cell
SoLoai = BChuoi.TokenCount 
For k = 1 To SoLoai 
'Chuoi cua tung chuc nang
BGiatri = BChuoi.TokenAt(k) 
Bchucnang = UCase(Left(BGiatri, Len(Chucnang))) 
Bgiatriso = Val(Right(BGiatri, Len(BGiatri) - len(Chucnang))) 
Select Case Bchucnang 
Case Chucnang 
Btotal = Btotal + Bgiatriso 
End Select 
Next k 
Next j 
Next i 
Chamcong = Btotal 
End Function
Với hàm chấm công như trên, bạn có thể dùng các chuổi ký tự dài hơn để thể hiện chức năng mà bạn cần (Ví dụ như: nghiphep, nghibenh, tangca,...vv), hay trong công thức bạn có thể tham chiếu đến một cell nào đó để đại diện cho chức năng bạn muốn.

Trong ví dụ này, ngày 22/02 tôi chấm công nghiphep1, ngày 23/02 tôi chấm công nghiphep0.5;tangca3. Công thức trong ô AM8, tôi sẽ nhập vào

Mã:
=chamcong(G8:AH8,AM7)
(ô AM7 chứa chữ Nghiphep)

Công thức trong ô AN8, tôi nhập công thức sau:

Mã:
=chamcong(G8:AH8,AN7)
(ô AN7 chứa chữ Tangca)

Vâng, dĩ nhiên là bạn có thể sử dụng các chuổi ký tự như trên sẽ dễ hiểu, nhưng bảng chấm công của bạn sẽ rất lượm thuộm.

Tôi hy vọng rằng bài viết trên sẽ giúp ích các bạn phần nào trong công việc chấm công nhàm chán (nhưng không được sai) hàng ngày của bạn.

Ngòai chức năng trên, hàm này còn làm được nhiều chức năng khác tùy từng ứng dụng của bạn.

Mọi ý kiến góp ý xin các bạn gởi về:

levanduyet@yahoo.com

Em đọc nhiều lần rùi mà vẫn chưa hiểu cách vận dụng hàm này thế nào? Anh Duyệt cho em xin 1 ví dụ (nhỏ) thực tế có vận dụng hàm này nhé!

Cám ơn anh! Em đã hiểu rùi!
 
Lần chỉnh sửa cuối:
Upvote 0
anh cho em hỏi có thể bỏ dấu ":" được không ạ. ví dụ như chấm CT0.5;U1 ạ
 
Upvote 0
anh cho em hỏi có thể bỏ dấu ":" được không ạ. ví dụ như chấm CT0.5;U1 ạ
Bạn đang bắt chuyện với ai & ở bài nào vậy?
Bạn làm như ai cũng phải hiểu được ý của bạn?
 
Upvote 0
anh cho em hỏi có thể bỏ dấu ":" được không ạ. ví dụ như chấm CT0.5;U1 ạ
Được hay không tuỳ theo từ "bỏ" có nghĩa là gì.
Nếu bỏ có nghĩa là bớt đi thì không được: "CT0.5;U1" làm gì có ":" để mà bớt?
Nếu bỏ có nghĩa là thêm vào thì được: muốn thêm vào chỗ nào?
 
Upvote 0
Em có sử dụng theo và đang làm được nhưng do muốn giản lược bớt ký hiệu chấm công nên em đặt công x là công thời gian, công k là công sản phẩm, đi cùng x với k là số giờ làm việc trong ngày. nếu làm việc quá 8 tiếng thì tính tăng ca. và làm việc vào ngày chủ nhật thì tính vào cột ngày chủ nhật. nhưng em không biết sửa code và công thức. nhờ mọi người giúp với ạ.
 

File đính kèm

Upvote 0
Web KT

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

Back
Top Bottom