Em tạo được bảng chấm công bình thường rồi(ngay lam 8h=x), nhưng khi phat sinh ra tăng ca thì em chưa biết làm sao.
Rất mong được sự hướng dẫn cuả mọi người.
Em gởi file kem theo.
Chân thành cám ơn!
Bạn xem file này nhéEm tạo được bảng chấm công bình thường rồi(ngay lam 8h=x), nhưng khi phat sinh ra tăng ca thì em chưa biết làm sao.
Rất mong được sự hướng dẫn cuả mọi người.
Em gởi file kem theo.
Chân thành cám ơn!
Em tạo bảng chấm công bình thường rồi. Nhưng khi phat sinh ra tăng ca thì em chưa biết làm sao. Rất mong được sự hướng dẫn cuả mọi người.
2Nhìn bài của bạn, tôi thấy công thức hơi bị rối.
1) Bạn phải cho biết hoặc thêm 1 bảng thời gian tăng ca của mỗi công nhân.
2) Tại sao trong bảng chấm công tháng, vừa có giá trị là số, lại vừa có giá trị "X"?
3) Quy định tăng ca là gì?
4) Nếu tính x = 8h, vậy 1 giờ tăng ca bạn có thể ghi là x/8 để dễ dàng tính được không?
Option Explicit
Sub ChuyenCong()
Dim Sh As Worksheet, Rng As Range, sRng As Range, Clls As Range
Dim Col As Byte, Cot As Byte: Dim dFormat As String
Set Sh = Sheets("ChamCong")
Set Rng = Sh.Range(Sh.[c2], Sh.[iv2].End(xlToLeft))
dFormat = "mm/dd/yyyy": Rng.NumberFormat = dFormat
Col = ActiveCell.Column
Set sRng = Rng.Find(Format(Cells(3, Col).Value, dFormat), , xlValues, xlWhole)
If Not sRng Is Nothing Then
Cot = sRng.Column: Set sRng = Nothing
Sh.Range(Sh.Cells(3, Cot), Sh.Cells(Sh.[a65500].End(xlUp).Row, Cot)).Value = "X"
Set Rng = Sh.Range(Sh.[a2], Sh.[a65500].End(xlUp))
If Cells(65500, Col).End(xlUp).Row = 3 Then Exit Sub
Else
MsgBox "Hay Nhap Ngay Tai 'ChamCong'": Exit Sub
End If
For Each Clls In Range(Cells(4, "A"), Cells(65500, "A").End(xlUp))
If Cells(Clls.Row, Col).Value <> "" Then
Set sRng = Rng.Find(Clls.Value)
If sRng Is Nothing Then
Clls.Interior.ColorIndex = 38
Else
With Cells(Clls.Row, Col)
If .Value <= 8 Then
Sh.Cells(sRng.Row, Cot).Value = .Value
Else
Sh.Cells(sRng.Row, Cot).Value = "X" & .Value - 8
End If
End With
End If
End If
Next Clls
End Sub