- Katılım
- 28 Eylül 2007
- Mesajlar
- 4,026
- Excel Vers. ve Dili
- 2013 Türkçe
Hocam bir yerde sorun çıkıyor. Bir kişi izin aldı ve iki kez görev almadı. Daha sonra geldiğinde görev ard arda 2 kez bu kişiye veriliyor.
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Hocam şöyle bir mantık yürütsek sorun çözülür mü acaba,Hocam bir yerde sorun çıkıyor. Bir kişi izin aldı ve iki kez görev almadı. Daha sonra geldiğinde görev ard arda 2 kez bu kişiye veriliyor.
Muhammet bey şöyle bir şey yapsak olur mu acaba,Hocam başka bir kod mantığı düşünmek gerekiyor. Bu ard arda sorun olmasa problem kalmıyor.
Kodu deneyiniz.Sub Kura()
Dim a, i, adet, adet1, tekrar, tekrar1, say As Byte
Dim son, son1, son2, alt, seçilen, b As Integer
Dim k As Worksheet
Application.ScreenUpdating = False
Set k = Sheets("Kontrol")
son = Cells(Rows.Count, 6).End(3).Row + 1
ActiveWindow.ScrollRow = son
5
For a = 5 To 24
If WorksheetFunction.Count(k.Range(k.Cells(2, a), k.Cells(200, a))) = Range("J5") Then GoTo 30
alt = k.Cells(Rows.Count, 2).End(3).Row
For i = 2 To alt
If k.Cells(i, 3) <> "" Or k.Cells(i, a) <> "" Then GoTo 10
son = Cells(Rows.Count, 6).End(3).Row + 1
son1 = Cells(Rows.Count, 2).End(3).Row + 1
If son = son1 Then
Range("M2:M1000") = ""
Exit Sub
End If
'Üst üste görev verme
'************************************************
adet1 = WorksheetFunction.CountIf(Range("M2:M1000"), k.Cells(i, 2))
seçilen = WorksheetFunction.CountA(Range("M2:M1000"))
tekrar1 = Int(seçilen / Range("J5"))
If adet1 > tekrar1 Then GoTo 10
'************************************************
' Aynı yere 2 kez gitmesin
adet = WorksheetFunction.CountIf(k.Range("E" & i & ":X" & i), Cells(son, 8))
say = Evaluate("SUMPRODUCT(--(C2:C200="""")*(E2:X200=" & Cells(son, 8) & "))")
tekrar = Int(say / Range("J5"))
If adet > tekrar Then GoTo 10
'************************************************
' Koşul sağlanıyorsa
son2 = Cells(Rows.Count, 13).End(3).Row + 1
Cells(son2, 13) = k.Cells(i, 2).Value
Cells(son, 6) = k.Cells(i, 2).Value
k.Cells(i, a) = Cells(son, 8).Value
i = 1
a = 4
'***********************************
10
b = b + 1
If b > Range("J5").Value Then Range("M2:M1000") = ""
Next i
'Range("M2:M100") = ""
30
Next a
If son <> son1 Then GoTo 5
Range("M2:M1000") = ""
Set k = Nothing
End Sub
[COLOR="Red"]b = b + 1[/COLOR]
Hocam şöyle açıklayayım;Son yazdığınız, bir çok karışıklığa neden olur. O zaman bazıları 3-4 görev alırken bazıları tek görevde kalabilir.
Siz buraya uygulanacak kriterleri sırasıyla yazınız. Ama sonradan yazdığınız kriterler öncekiyle çakışmasın.