Giúp mình tính số lần xuất hiện số 3 liên tục, 5 lần xuất hiện liên tiếp được tính là 1 lần
cảm ơn nhiều ạ!
giúp mình tính số lần xuất hiện số 3 liên tục, 5 lần xuất hiện liên tiếp được tính là 1 lần
cảm ơn nhiều ạ!
Public Function Dem123(Rng As Range, Num As Long, Lan As Long) As Long
Dim Cll As Range, Dem As Long
For Each Cll In Rng
If Cll.Value = Num Then
Dem = Dem + 1
If Dem = Lan Then
Dem123 = Dem123 + 1
Dem = 0
End If
Else
Dem = 0
End If
Next Cll
End Function
=Dem123(E6:AJ6;3;5)




Anh Ba Tê có thể giúp e cho e xin 02 công thức
1 cho thời gian thử việc (Cần cứ vào ngày hết hợp đồng)
1 cho thời gian chính thức (Cần cứ vào ngày hết hợp đồng)
Ở trong bài này có một tình huống là
- Ngày vào 03/05/2016
- Ngày kết thúc 02/06/2016
- Trong khi đó ở trong khoảng tuần từ 30/05/2016 - 05/06/2016 có 01 lần block số 3 xuất hiện 5 lần, nhưng nó lại có cả thời gian thử việc và chính thức. (Anh có thể giúp e ở tình huống này, thời gian nào chiếm được 3/5 lần thì lấy bên đó). Như trường hợp này thì sẽ thuộc bên thử việc 1 Block từ 30/05/2016 - 03/06/2016 và 1 block cho chính thức từ 20-24/06/2016
E cảm ơn anh nhiều ạ!
Bây giờ thì gút lại yêu cầu thế nào?giúp mình tính số lần xuất hiện số 3 liên tục, 5 lần xuất hiện liên tiếp được tính là 1 lần
cảm ơn nhiều ạ!
Giúp e với anh ba Tê ơi!
Option Explicit
Function DemBlock(rng As Range, DateRng As Range, F_date As Range, loai As Boolean)
Dim i, dem_thuviec, dem_chinhthuc, cnt, cnt2, ngay As Long
If rng.Columns.Count <> DateRng.Columns.Count Then Exit Function
For i = 1 To rng.Columns.Count
If DateRng.Cells(1, i) <> "" Then ngay = DateRng.Cells(1, i).Value2
If ngay <= F_date.Value2 Then
If rng.Cells(1, i).Value = 3 Then
cnt = cnt + 1
Else
cnt = 0
End If
If cnt = 5 Then dem_thuviec = dem_thuviec + 1: cnt = 0
Else
If rng.Cells(1, i).Value = 3 Then
cnt2 = cnt2 + 1
Else
cnt2 = 0
End If
If cnt2 = 5 Then dem_chinhthuc = dem_chinhthuc + 1: cnt2 = 0
End If
Next
If loai = True Then
DemBlock = dem_chinhthuc
Else
DemBlock = dem_thuviec
End If
End Function
AK5=DemBlock($E$6:$AJ$6,$E$3:$AJ$3,D6,0)
AL5=DemBlock($E$6:$AJ$6,$E$3:$AJ$3,D6,1)
có vẻ chưa đúng anh ơi! trong công thức của anh, cái dòng số 3 ý a muốn có phải là lấy ngày cụ thể của từng tháng thì ở dòng thứ 5 e đã có rồi, e thay dòng 3 bằng dòng 5. NHƯNG KẾT QUẢ RA KHÔNG CHÍNH XÁC Ạ. a kiểm tra lại giúp e với ạ!
trong khi chờ, tôi làm thử
Mã:Option Explicit Function DemBlock(rng As Range, DateRng As Range, F_date As Range, loai As Boolean) Dim i, dem_thuviec, dem_chinhthuc, cnt, cnt2, ngay As Long If rng.Columns.Count <> DateRng.Columns.Count Then Exit Function For i = 1 To rng.Columns.Count If DateRng.Cells(1, i) <> "" Then ngay = DateRng.Cells(1, i).Value2 If ngay <= F_date.Value2 Then If rng.Cells(1, i).Value = 3 Then cnt = cnt + 1 Else cnt = 0 End If If cnt = 5 Then dem_thuviec = dem_thuviec + 1: cnt = 0 Else If rng.Cells(1, i).Value = 3 Then cnt2 = cnt2 + 1 Else cnt2 = 0 End If If cnt2 = 5 Then dem_chinhthuc = dem_chinhthuc + 1: cnt2 = 0 End If Next If loai = True Then DemBlock = dem_chinhthuc Else DemBlock = dem_thuviec End If End Function
Mã:AK5=DemBlock($E$6:$AJ$6,$E$3:$AJ$3,D6,0) AL5=DemBlock($E$6:$AJ$6,$E$3:$AJ$3,D6,1)
dòng số 3,ngày, nhập đủ dạng ngày tháng năm nha, vid1 dụ 1/5/16
Cảm ơn Anh (chị) Let go go đã giúp e qua công thức trên, Nhưng e vừa thử lại, hình như có 1 điều kiện chưa chính xác ạ. Trong file đính kèm, e có để ở trường hợp đầu tiên khi số ngày Chính thức hoặc thử việc chiếm 3/5 lần số 3 thì được là một lần Block cho hình thức đó. Như trong file người có ngày kết thúc hợp đồng là 22/06/2016 nằm trong tuần từ 20-24/06/2016 Vậy thời gian thử việc trong block này chiếm tới 3 ngày là 20,21,22 NÊN ĐÁP ÁN CỦA trường hợp đầu tiên này phải Bằng 2.
Mong anh chị xem lại giúp e với ạ
Option Explicit
Function DemBlock(rng As Range, DateRng As Range, F_date As Range, loai As Boolean)
Dim i, dem_thuviec, dem_chinhthuc, cnt, cnt2, tuan As Long
If rng.Columns.Count <> DateRng.Columns.Count Then Exit Function
For i = 1 To rng.Columns.Count
tuan = Format(DateRng.Cells(1, i).Value2, "ww")
If tuan <= Format(F_date.Value2, "ww") Then
If rng.Cells(1, i).Value = 3 Then
cnt = cnt + 1
Else
cnt = 0
End If
If cnt = 5 Then dem_thuviec = dem_thuviec + 1: cnt = 0
Else
If rng.Cells(1, i).Value = 3 Then
cnt2 = cnt2 + 1
Else
cnt2 = 0
End If
If cnt2 = 5 Then dem_chinhthuc = dem_chinhthuc + 1: cnt2 = 0
End If
Next
If loai = True Then
DemBlock = dem_chinhthuc
Else
DemBlock = dem_thuviec
End If
End Function
Function DemBlock(rng As Range, DateRng As Range, F_date As Range, loai As Boolean)
Dim i, dem_thuviec, dem_chinhthuc, cnt, cnt1, cnt2, ngay As Long
If rng.Columns.Count <> DateRng.Columns.Count Then Exit Function
For i = 1 To rng.Columns.Count
If DateRng.Cells(1, i) <> "" Then ngay = DateRng.Cells(1, i).Value2
If ngay <= F_date.Value2 Then
If rng.Cells(1, i).Value = 3 Then
cnt = cnt + 1: cnt1 = cnt1 + 1
Else
cnt = 0: cnt1 = 0
End If
If cnt1 = 5 Then dem_thuviec = dem_thuviec + 1: cnt = 0: cnt1 = 0
Else
If rng.Cells(1, i).Value = 3 And rng.Cells(1, i - 1).Value = 3 Then
cnt1 = cnt1 + 1
Else
cnt = 0: cnt1 = 0
End If
If cnt1 = 5 Then
If cnt > 2 Then
dem_thuviec = dem_thuviec + 1
Else
dem_chinhthuc = dem_chinhthuc + 1
End If
cnt = 0: cnt1 = 0
End If
If rng.Cells(1, i).Value = 3 Then
cnt2 = cnt2 + 1
Else
cnt2 = 0
End If
If cnt2 = 5 Then dem_chinhthuc = dem_chinhthuc + 1: cnt2 = 0
End If
Next
If loai = True Then
DemBlock = dem_chinhthuc
Else
DemBlock = dem_thuviec
End If
End Function
1. Nếu nhỏ hơn hoặc bằng ngày KẾT THÚC HỢP ĐỒNG LÀ thử việc
2. nếu lớn hơn ngày KẾT THÚC HỢP ĐỒNG Là Chính Thức
3. 3/5 thuộc khoảng nào thì tính khoảng đó ( ok)
4. các số 3 và 5 lần là cố định, không liên quan gì đến số 0 và 1 ạ
Anh làm giúp e với ạ!
Public Function Dem123(Rng As Range, Ngay As Range, HHD As Long, Optional Num As Long = 0) As Long
Dim J As Long, DemTV As Long, DemCT As Long
For J = 1 To Rng.Columns.Count
If Rng(1, J).Value = 3 Then
If Ngay(1, J).Value <= HHD Then
DemTV = DemTV + 1
Else
DemCT = DemCT + 1
End If
If DemTV + DemCT = 5 Then
If Num = 0 Then
If DemTV >= 3 Then Dem123 = Dem123 + 1
Else
If DemCT >= 3 Then Dem123 = Dem123 + 1
End If
End If
Else
DemTV = 0
DemCT = 0
End If
Next J
End Function