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