Tính giờ chấm công ngày Lễ tết

Liên hệ QC

tnfsmith

Thành viên hoạt động
Tham gia
26/3/07
Bài viết
151
Được thích
0
Giới tính
Nam
Em có đính kèm file, kính mong anh chị em xem và hỗ trợ ah.
Em chỉ muốn tính số giờ nghỉ Lễ tết và Ngày nghỉ trên Bảng chấm công
Rất mong được sự hỗ trợ.
 

File đính kèm

  • TINH GIO CHAM CONG_GPE.xlsx
    87.2 KB · Đọc: 22
Em có đính kèm file, kính mong anh chị em xem và hỗ trợ ah.
Em chỉ muốn tính số giờ nghỉ Lễ tết và Ngày nghỉ trên Bảng chấm công
Rất mong được sự hỗ trợ.
Không nên đăng nhiều bài cho 1 vấn đề, hạn chế viết từ tắt vì vi phạm nội qui của diễn đàn
Mã:
O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)
Copy xuống
Makefile:
M10 =MIN(SUMPRODUCT(('CHI TIET'!D11:AH11<>"")*(WEEKDAY('CHI TIET'!$D$10:$AH$10,2)>5)*(COUNTIF('CHI TIET'!$AK$9:$AK$21,'CHI TIET'!$D$10:$AH$10)=0)),3-O10)
Copy xuống
 

File đính kèm

  • TINH GIO CHAM CONG_GPE.xlsx
    87.8 KB · Đọc: 22
Không nên đăng nhiều bài cho 1 vấn đề, hạn chế viết từ tắt vì vi phạm nội qui của diễn đàn
Mã:
O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)
Copy xuống
Makefile:
M10 =MIN(SUMPRODUCT(('CHI TIET'!D11:AH11<>"")*(WEEKDAY('CHI TIET'!$D$10:$AH$10,2)>5)*(COUNTIF('CHI TIET'!$AK$9:$AK$21,'CHI TIET'!$D$10:$AH$10)=0)),3-O10)
Copy xuống
Cám ơn bạn đã hỗ trợ.
Công thức hiện chỉ tính số ngày, mình muốn tính ra số giờ tương ứng với ngày đó (ví dụ:1 ngày thì 8 giờ, 2 ngày thì 16 giờ, 3 ngày thì 24 giờ) bạn có thể hỗ trợ thêm được không vậy?
Xin cám ơn
Bài đã được tự động gộp:

tham khảo file, công thức hơi dài :))
Của bạn hơi khó hiểu nhưng ra chuẩn kết quả.

Cám ơn bạn nhiều lắm
 
Cám ơn bạn đã hỗ trợ.
Công thức hiện chỉ tính số ngày, mình muốn tính ra số giờ tương ứng với ngày đó (ví dụ:1 ngày thì 8 giờ, 2 ngày thì 16 giờ, 3 ngày thì 24 giờ) bạn có thể hỗ trợ thêm được không vậy?
Xin cám ơn
Bài đã được tự động gộp:


Của bạn hơi khó hiểu nhưng ra chuẩn kết quả.

Cám ơn bạn nhiều lắm
Nhân thêm cho 8 giờ/ngày
Mã:
O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)*8
M10 =MIN(SUMPRODUCT(('CHI TIET'!D11:AH11<>"")*(WEEKDAY('CHI TIET'!$D$10:$AH$10,2)>5)*(COUNTIF('CHI TIET'!$AK$9:$AK$21,'CHI TIET'!$D$10:$AH$10)=0))*8,24-O10)
 
Nhân thêm cho 8 giờ/ngày
Mã:
O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)*8
M10 =MIN(SUMPRODUCT(('CHI TIET'!D11:AH11<>"")*(WEEKDAY('CHI TIET'!$D$10:$AH$10,2)>5)*(COUNTIF('CHI TIET'!$AK$9:$AK$21,'CHI TIET'!$D$10:$AH$10)=0))*8,24-O10)
Mình muốn thay vì để ngày nghỉ thì mình muốn cộng ngày giờ làm thêm theo màu được không nhỉ? ý là ngày lễ mình để màu đỏ, thứ 7, CN để màu xanh... và nó sẽ cộng theo ngày ra cho mình.
 
"help mình" là gì vậy? không nên viết nữa nạc nữa mở, là quy định trong nội quy diễn đàn
Gởi file tô màu lên và nói rỏ cần tính cái gì
Cám ơn bạn đã góp ý. Mình đã đính kèm file. Bạn xem có thể hỗ trợ mình được không nhé.
 

File đính kèm

  • TINH GIO CHAM CONG_GPE_To mau.xlsx
    90.1 KB · Đọc: 12
Tô màu là được rùi bạn

Chị cần tô màu là đủ điều kiện rồi bạn, tô màu bằng tay ấy.
Màu đỏ và màu xanh có nhiều màu, phải tô đúng màu trong file
Mã:
Option Compare Text

Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
  Dim sRow&, sCol&, i&, j&, tmp&
  sRow = ChamCong.Rows.Count: sCol = ChamCong.Columns.Count
  For i = 1 To sRow
    If MaNV = Maso(i, 1).Value Then
      For j = 1 To sCol
        If ChamCong(i, j).Value <> Empty Then
          If NghiLe = 0 And ChamCong(i, j).Font.ColorIndex = 42 Then
            tmp = tmp + 1
          ElseIf NghiLe = 1 And ChamCong(i, j).Font.ColorIndex = 3 Then
            tmp = tmp + 1
          End If
        End If
      Next j
    End If
  Next i
  NgayNghi = tmp * 8
End Function
Xem cách nhập công thức trong file
 

File đính kèm

  • TINH GIO CHAM CONG_GPE_To mau.xlsb
    78.7 KB · Đọc: 13
Màu đỏ và màu xanh có nhiều màu, phải tô đúng màu trong file
Mã:
Option Compare Text

Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
  Dim sRow&, sCol&, i&, j&, tmp&
  sRow = ChamCong.Rows.Count: sCol = ChamCong.Columns.Count
  For i = 1 To sRow
    If MaNV = Maso(i, 1).Value Then
      For j = 1 To sCol
        If ChamCong(i, j).Value <> Empty Then
          If NghiLe = 0 And ChamCong(i, j).Font.ColorIndex = 42 Then
            tmp = tmp + 1
          ElseIf NghiLe = 1 And ChamCong(i, j).Font.ColorIndex = 3 Then
            tmp = tmp + 1
          End If
        End If
      Next j
    End If
  Next i
  NgayNghi = tmp * 8
End Function
Xem cách nhập công thức trong file
Cám ơn bạn rất nhiều.
 
Màu đỏ và màu xanh có nhiều màu, phải tô đúng màu trong file
Mã:
Option Compare Text

Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
  Dim sRow&, sCol&, i&, j&, tmp&
  sRow = ChamCong.Rows.Count: sCol = ChamCong.Columns.Count
  For i = 1 To sRow
    If MaNV = Maso(i, 1).Value Then
      For j = 1 To sCol
        If ChamCong(i, j).Value <> Empty Then
          If NghiLe = 0 And ChamCong(i, j).Font.ColorIndex = 42 Then
            tmp = tmp + 1
          ElseIf NghiLe = 1 And ChamCong(i, j).Font.ColorIndex = 3 Then
            tmp = tmp + 1
          End If
        End If
      Next j
    End If
  Next i
  NgayNghi = tmp * 8
End Function
Xem cách nhập công thức trong file
Mình đã test lại thì còn vấn đề này chưa giải quyết được đó là code chưa chạy đúng nếu tăng tô màu các Ngày Nghĩ cuối tuần càng nhiều thì code cứ tăng lên hơn số tổng là tối đa là 24 giờ/tháng và ưu tiên ngày Nghĩ Lễ trước, sau đó mới đến Ngày Nghĩ cuối tuần.

Bạn @HieuCD có thể xem lại dùm mình được không ah.
Xin cám ơn.
 
Mình đã test lại thì còn vấn đề này chưa giải quyết được đó là code chưa chạy đúng nếu tăng tô màu các Ngày Nghĩ cuối tuần càng nhiều thì code cứ tăng lên hơn số tổng là tối đa là 24 giờ/tháng và ưu tiên ngày Nghĩ Lễ trước, sau đó mới đến Ngày Nghĩ cuối tuần.

Bạn @HieuCD có thể xem lại dùm mình được không ah.
Xin cám ơn.
Code chỉ tính theo
Mình muốn thay vì để ngày nghỉ thì mình muốn cộng ngày giờ làm thêm theo màu được không nhỉ? ý là ngày lễ mình để màu đỏ, thứ 7, CN để màu xanh... và nó sẽ cộng theo ngày ra cho mình.
Màu nhập phải chuẩn
 
Code chỉ tính theo

Màu nhập phải chuẩn
Màu mình nhập chuẩn rồi bạn. Nếu trong tháng có nhiều Ngày Nghỉ cuối tuần thì nó vẫn bị cộng dồn vào (nghĩa là lớn hơn 24giờ - số tối đa đc làm thêm trong 1 tháng)
 
Màu mình nhập chuẩn rồi bạn. Nếu trong tháng có nhiều Ngày Nghỉ cuối tuần thì nó vẫn bị cộng dồn vào (nghĩa là lớn hơn 24giờ - số tối đa đc làm thêm trong 1 tháng)
Giớ hạn 24 giờ
Mã:
Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
  Dim sRow&, sCol&, i&, j&, tmp&
  sRow = ChamCong.Rows.Count: sCol = ChamCong.Columns.Count
  For i = 1 To sRow
    If MaNV = Maso(i, 1).Value Then
      For j = 1 To sCol
        If ChamCong(i, j).Value <> Empty Then
          If NghiLe = 0 And ChamCong(i, j).Font.ColorIndex = 42 Then
            tmp = tmp + 1
          ElseIf NghiLe = 1 And ChamCong(i, j).Font.ColorIndex = 3 Then
            tmp = tmp + 1
          End If
        End If
      Next j
    End If
  Next i
  If tmp >= 3 Then NgayNghi = 24 Else NgayNghi = tmp * 8
End Function
 
Muốn giới hạn ở mức 24 giờ không cần sửa UDF, dùng hàm min:

=MIN(24, công thức cũ)
 
Giớ hạn 24 giờ
Mã:
Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
  Dim sRow&, sCol&, i&, j&, tmp&
  sRow = ChamCong.Rows.Count: sCol = ChamCong.Columns.Count
  For i = 1 To sRow
    If MaNV = Maso(i, 1).Value Then
      For j = 1 To sCol
        If ChamCong(i, j).Value <> Empty Then
          If NghiLe = 0 And ChamCong(i, j).Font.ColorIndex = 42 Then
            tmp = tmp + 1
          ElseIf NghiLe = 1 And ChamCong(i, j).Font.ColorIndex = 3 Then
            tmp = tmp + 1
          End If
        End If
      Next j
    End If
  Next i
  If tmp >= 3 Then NgayNghi = 24 Else NgayNghi = tmp * 8
End Function
Cám ơn bạn đã hỗ trợ nhưng vấn đề là tổng của Ngày Lễ và ngày Nghỉ cuối tuần chỉ được 24 giờ thôi. Như yêu cầu bên dưới ấy bạn. Code hiện tại giới hạn cho chỉ ngày Lễ hoặc ngày Cuối Tuần là 24h tổng lại của 2 loại ngày nghỉ đó hơn 24h/tháng.
Tổng thời gian chấm công trong tháng của các ngày thứ bảy, chủ nhật và ngày lễ tối đa là 3 ngày tương đương 24 giờ (ưu tiên giờ chấm công cho ngày lễ, tết xong mới chuyển qua tính cho ngày thứ bảy, chủ nhật
 
Web KT
Back
Top Bottom