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 đànEm 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ợ.
O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)
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)
tham khảo file, công thức hơi dàiEm 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ợ.
Cám ơn bạn đã 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
Copy xuốngMã:O10 =MIN(SUMPRODUCT(COUNTIFS('CHI TIET'!D11:AH11,"<>",'CHI TIET'!$D$10:$AH$10,'CHI TIET'!$AK$9:$AK$21)),3)
Copy xuốngMakefile: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)
Của bạn hơi khó hiểu nhưng ra chuẩn kết quả.tham khảo file, công thức hơi dài)
Nhân thêm cho 8 giờ/ngàyCá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
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.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)
Dùng code VBA ......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.
Vậy bạn có thể help mình được không ahDùng code VBA ......
"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 đànVậy bạn có thể help mình được không ah
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é."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ì
Màu đỏ do bạn format tay và còn do format theo điều kiện bảng tính tự làm, vậy theo cái nào?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é.
Chị cần tô màu là đủ điều kiện rồi bạn, tô màu bằng tay ấy.Màu đỏ do bạn format tay và còn do format theo điều kiện bảng tính tự làm, vậy theo cái nào?
Màu đỏ và màu xanh có nhiều màu, phải tô đúng màu trong fileTô 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.
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
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
Xem cách nhập công thức trong fileMã: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
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.Màu đỏ và màu xanh có nhiều màu, phải tô đúng màu trong file
Xem cách nhập công thức trong fileMã: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
Code chỉ tính theoMì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àu nhập phải chuẩnMì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 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)Code chỉ tính theo
Màu nhập phải chuẩn
Giớ hạn 24 giờ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)
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.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
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
Chỉnh tiếpCá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.
Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single
Dim sRow&, sCol&, i&, j&, Le&, CN&
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 ChamCong(i, j).Font.ColorIndex = 42 Then
CN = CN + 1
ElseIf ChamCong(i, j).Font.ColorIndex = 3 Then
Le = Le + 1
End If
End If
Next j
End If
Next i
If Le >= 3 Then NgayNghi = 24 Else NgayNghi = Le * 8
If NghiLe = 0 Then
If CN * 8 >= 24 - NgayNghi Then
NgayNghi = 24 - NgayNghi
Else
NgayNghi = CN * 8
End If
End If
End Function
Cám ơn bạn nhiều. Code chạy chuẩn rồi bạn. Chỉ có cái là khi mình đổi màu vào ô tương ứng để đánh dấu ngày nghỉ thì công thức nó không tự động tính toán lại số giờ, phải F2 tại ô đó hoặc kéo lại công thức thì mới tính toán lại. Trong thiết lập Formulas của Excel mình đã để Automatic rồi mà vẫn không hiệu quả.Chỉnh tiếp
Mã:Function NgayNghi(MaNV$, Maso As Range, ChamCong As Range, Optional NghiLe& = 0) As Single Dim sRow&, sCol&, i&, j&, Le&, CN& 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 ChamCong(i, j).Font.ColorIndex = 42 Then CN = CN + 1 ElseIf ChamCong(i, j).Font.ColorIndex = 3 Then Le = Le + 1 End If End If Next j End If Next i If Le >= 3 Then NgayNghi = 24 Else NgayNghi = Le * 8 If NghiLe = 0 Then If CN * 8 >= 24 - NgayNghi Then NgayNghi = 24 - NgayNghi Else NgayNghi = CN * 8 End If End If End Function
Đổi màu Function không tự cập nhật được, bắt sự kiện mở sheetCám ơn bạn nhiều. Code chạy chuẩn rồi bạn. Chỉ có cái là khi mình đổi màu vào ô tương ứng để đánh dấu ngày nghỉ thì công thức nó không tự động tính toán lại số giờ, phải F2 tại ô đó hoặc kéo lại công thức thì mới tính toán lại. Trong thiết lập Formulas của Excel mình đã để Automatic rồi mà vẫn không hiệu quả.
Xin hỏi bạn @HieuCD là có cách nào để sau khi mình đổi màu đánh dấu ngày nghỉ thì công thức nó tự chạy mà không cần phải F2 hay kéo công thức cả cột để cập nhật lại số giờ.
Xin cám ơn bạn nhiều lắm
Private Sub Worksheet_Activate()
Sheet2.Calculate
End Sub
Không biết có giới hạn số giờ công không?Mình còn thêm 1 sheet để hoàn thành công việc mong bạn @HieuCD xem và hỗ trợ dùm mình cho xong luôn ah.
Yêu cầu chi tiết mình có đính kèm theo file Excel. (chủ yếu lấy ngày được đánh dấu chấm công để lên sheet Cham Cong)
Mình rất cám ơn bạn đã nhiệt tình giúp đỡ.
Vâng đúng rồi bạn, vẫn giới hạn tối đa 24h/tháng ah.Không biết có giới hạn số giờ công không?
Làm thêm 5 ngày vậy bỏ ngày nào không liệt kê? cho ví dụ nhaVâng đúng rồi bạn, vẫn giới hạn tối đa 24h/tháng ah.
Cũng tối đa là 3 ngày ah bạn mỗi ngày 8 giờ, ưu tiên thì cũng ngày Lễ sau đó đến ngày Cuối tuần. Ngày lễ thì theo bảng ngày Nghỉ lễ trong năm.Làm thêm 5 ngày vậy bỏ ngày nào không liệt kê? cho ví dụ nha
Ý mình là trình bày kết quả như thế nào?Cũng tối đa là 3 ngày ah bạn mỗi ngày 8 giờ, ưu tiên thì cũng ngày Lễ sau đó đến ngày Cuối tuần. Ngày lễ thì theo bảng ngày Nghỉ lễ trong năm.
Cám ơn bạn nhiều lắm