Bạn gõ vào cell Đ1 công thức sau:Chào mọi người
Tôi muốn lập công thức thống kê ngày phép như trong ví dụ của file đính kèm nhưng không biết giải quyết như thế nào. Mong mọi người xem và giúp đỡ
Cám ơn nhiều
Thân chào
=SUMPRODUCT(($C$4:$C$10=$C19)*(MONTH($D$4:$D$10)=MONTH(D$18))*($F$4:$F$10))
Bạn gõ vào cell Đ1 công thức sau:
Kéo fill sang phải và xuống dướiPHP:=SUMPRODUCT(($C$4:$C$10=$C19)*(MONTH($D$4:$D$10)=MONTH(D$18))*($F$4:$F$10))
Đồng ý điều này!Chào ndu96081631
Cám ơn bạn về công thức trên. Tuy nhiên nếu thời gian nghỉ phép nằm trong 2 tháng hoặc hai năm khác nhau thì công thức trên không còn đúng nữa.
Ví dụ: nghỉ phép từ ngày 28-03-09 đến ngày 03-04-09 hoặc từ ngày 28-12-08 đến ngày 5-01-09 thì công thức chỉ thống kê ngày phép cho tháng hoặc năm của thời gian bắt đầu nghỉ phép.
Thân
Đồng ý điều này!
Vậy bạn cho điều kiện thống kê đi ---> Trong trường hợp thời gian bắt đầu và kết thúc nằm ở 2 tháng khác nhau thì bạn muốn thống kê thế nào?
Ái chà... Bài toán này hơi bị hay à nha!Chào ndu96081631
Cám ơn bạn đã giúp đỡ. Mình xin gửi kèm file đính kèm để bạn xem và lập giúp công thức.
Nếu bảng 1, liệt kê các NV nghỉ phép mà 1 NV chỉ 1 dòng thì còn nghĩ ra, chớ hơn 1 dòng thì chưa nghĩ ra.Ái chà... Bài toán này hơi bị hay à nha!
Về lý thuyết, nếu ngày bắt đầu và ngày kết thúc nằm ở 2 tháng riêng biệt nhưng 2 tháng này liền kề nhau thì không có gì khó cả... Tuy nhiên tôi đang nghĩ đến trường hợp tổng quát: Ngày bắt đầu và kết thúc có thể nằm ở cách xa nhau nhiều tháng... Ví dụ: từ 15/1/2009 đến 4/5/2009 thì phải tính được trong từng tháng có bao nhiêu ngày nghĩ
Để suy nghĩ kỹ lại xem!
Mời các cao thủ thử sức!
---------------------
Ah... tôi quên hỏi bạn 1 vấn đề quan trọng:
- Trong những ngày đang nghĩ phép, có ngày nào đó rơi vào chủ nhật thì có tính không?
- Ông Nguyễn Văn A nghĩ từ 29/12/2008 đến 05/01/2009.. tôi tính ra số ngày nghĩ phải là 8 ngày (nếu tính luôn CN) hoặc 7 ngày (nếu trừ đi CN) ---> Trong khi đó bạn lại tính ra 6 ngày ---> vậy là sao? (xem lại cell F4)
Bạn làm rõ 2 câu hỏi này và kiểm tra lại thật kỹ 1 lần nữa về số liệu trong file đính kèm rồi ta làm tiếp
Tạm thời tôi đang đi theo hướng dùng hàm tự tạo ---> Còn công thức thì vả quá, vẩn chưa nghĩ ra
Function NghiPhep(Ten As String, VungTen As Range, NgayBD As Range, NgayKT As Range, TrongThang As Long, TrongNam As Long, Optional TruCN As Boolean = True) As Long
Dim i As Long, Dk1 As Boolean, Dk2 As Boolean, Dk3 As Boolean, Temp As Long
Dim Temp1 As Long, Temp2 As Long, Temp3 As Long
For i = 1 To VungTen.Rows.Count
If VungTen(i) = Ten Then
Dk1 = (Format(NgayBD(i), "mmyyyy") = Format(TrongThang, "00") & Format(TrongNam, "0000"))
Dk2 = (Format(NgayKT(i), "mmyyyy") = Format(TrongThang, "00") & Format(TrongNam, "0000"))
Dk3 = (DateSerial(TrongNam, TrongThang, 1) >= NgayBD(i) And DateSerial(TrongNam, TrongThang, 1) <= NgayKT(i))
If Dk1 Or Dk2 Or Dk3 Then
Temp1 = WorksheetFunction.Max(NgayBD(i), DateSerial(TrongNam, TrongThang, 1))
Temp2 = WorksheetFunction.Min(NgayKT(i), DateSerial(TrongNam, TrongThang + 1, 0))
Temp3 = Temp3 + Temp2 - Temp1 + 1 + TruCN * Int((Temp2 - Temp1 - Weekday(Temp2 - 6, vbMonday) + 8) / 7)
End If
End If
Next i
NghiPhep = Temp3
End Function
Ái chà... Bài toán này hơi bị hay à nha!
Về lý thuyết, nếu ngày bắt đầu và ngày kết thúc nằm ở 2 tháng riêng biệt nhưng 2 tháng này liền kề nhau thì không có gì khó cả... Tuy nhiên tôi đang nghĩ đến trường hợp tổng quát: Ngày bắt đầu và kết thúc có thể nằm ở cách xa nhau nhiều tháng... Ví dụ: từ 15/1/2009 đến 4/5/2009 thì phải tính được trong từng tháng có bao nhiêu ngày nghĩ
Để suy nghĩ kỹ lại xem!
Mời các cao thủ thử sức!
---------------------
Ah... tôi quên hỏi bạn 1 vấn đề quan trọng:
- Trong những ngày đang nghĩ phép, có ngày nào đó rơi vào chủ nhật thì có tính không?
- Ông Nguyễn Văn A nghĩ từ 29/12/2008 đến 05/01/2009.. tôi tính ra số ngày nghĩ phải là 8 ngày (nếu tính luôn CN) hoặc 7 ngày (nếu trừ đi CN) ---> Trong khi đó bạn lại tính ra 6 ngày ---> vậy là sao? (xem lại cell F4)
Bạn làm rõ 2 câu hỏi này và kiểm tra lại thật kỹ 1 lần nữa về số liệu trong file đính kèm rồi ta làm tiếp
Tạm thời tôi đang đi theo hướng dùng hàm tự tạo ---> Còn công thức thì vả quá, vẩn chưa nghĩ ra
Nếu thế thì phải có 1 vùng liệt kê các ngày lể nữaChào bạn
- Mình không tính ngày Chủ nhật.
- Ông Nguyễn Văn A nghỉ từ 29/12/08- 05/01/2009: được nghỉ Chủ nhật và nghỉ Tết tây 01.01.09 mà không trừ vào phép nên Ông A chỉ nghỉ 6 ngày phép. Cám ơn các bạn đã quan tâm giải giúp bài toán.
Thân
Nếu thế thì phải có 1 vùng liệt kê các ngày lể nữa
Bạn xem file nhé
Bài toán này rất thiết thực đây
=NgayPhep(Ten, VungTen, Vùng Ngày BT, Vùng Ngày KT, TrongThang, TrongNam, NghiLe)
Hiện tại cú pháp trong UDF này là:
Các bạn hãy cải tiến hàm này sao cho:PHP:=NgayPhep(Ten, VungTen, Vùng Ngày BT, Vùng Ngày KT, TrongThang, TrongNam, NghiLe)
- Nếu bỏ qua biến TrongThang có nghĩa là ta muốn tính số ngày phép đã dùng trong năm
- Nếu bỏ qua cả 2 biến TrongThang và TrongNam có nghĩa là ta muốn tính toàn bộ số ngày phép đã sử dụng
Xin mời các cao thủ trợ giúp 1 tay
Ý tưởng tôi nêu ở trên mới khó chứ thêm điều kiện lọc như bạn thì khó gì... Đơn giản là thêm biến vào code và 1 câu lệnh AND là được!Chào bạn
Mình muốn mở rộng bài toán này ở cấp độ khó hơn là nếu ta thêm một cột Ghi chú: Nghỉ phép, nghỉ không lương và nghỉ ốm vào bảng 1. Làm thế nào để bảng 2 chỉ thống kê những ngày nghỉ phép mà thôi. Cám ơn bạn.
Thân
Ý tưởng tôi nêu ở trên mới khó chứ thêm điều kiện lọc như bạn thì khó gì... Đơn giản là thêm biến vào code và 1 câu lệnh AND là được!
Xem file
Bạn thử bấm Alt + F11 vào xem code mới này và so sánh với code củ, nó cũng chả khác nhau gì mấy
Ủa... tôi vừa xem file của bạn xong nhưng đâu có thấy chổ nào ghi nửa ngày phép nhỉ?Thank bạn. Cho mình hỏi thêm, nếu như bài toán chỉ tính nghỉ nữa ngày phép thì công thức phải thay đổi như thế nào ?
Ủa... tôi vừa xem file của bạn xong nhưng đâu có thấy chổ nào ghi nửa ngày phép nhỉ?
Bạn ghi rõ vào file xem!
Còn nếu tất cả đều là nửa ngày thì đơn giản cứ lấy kết quả chia 2 thôi
Trời... cái này đâu có khó... tôi nghĩ trong tầm tay bạn thôi..Mình ghi chú màu đỏ....
=NgayPhep($C21,$C$4:$C$9,$G$4:$G$9,"Nghỉ Phép",$D$4:$D$9,$E$4:$E$9,MONTH(D$20),YEAR(D$20),$L$2:$L$6)+NgayPhep($C21,$C$4:$C$9,$G$4:$G$9,"Nghỉ Phép 1/2 ngày",$D$4:$D$9,$E$4:$E$9,MONTH(D$20),YEAR(D$20),$L$2:$L$6)/2