• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

Hafta içi günlere eşit dağıtım Macrosu

Katılım
17 Mayıs 2006
Mesajlar
30
Kapatılmamış hafta içi günlere 10 sayısını eşite yakın bir şekilde makro ile dağıtmak istiyorum yardımcı olursanız sevinirim.
 

Ekli dosyalar

Merhaba
Sub Dağıt()
For i = 6 To 12
a = WorksheetFunction.Sum(Range("D" & i & ":H" & i))
Do Until a = 10
For j = 4 To 8
If Cells(i, j) = "X" Or Cells(i, j) = "x" Then GoTo 10
If Cells(i, 9) = 10 Then Exit Do
Cells(i, j) = Cells(i, j) + 1
10
Next j
Loop
Next i
End Sub

kodu deneyiniz.
 
İlginiz için teşekkürler ilk satırda hücrelerde artan sayılar yazıyor 1582 olunca excel kitleniyor cevap vermiyor görev yöneticisinden kapatmak gerekiyor
 
Sub Dağıt()
For i = 6 To 12
Range("I6:I12") = "=SUM(D6:H6)"
Do Until Range("I" & i) = 10
For j = 4 To 8
If Cells(i, j) = "X" Or Cells(i, j) = "x" Then GoTo 10
If Cells(i, 9) = 10 Then Exit Do
Cells(i, j) = Cells(i, j) + 1
10
Next j
Loop
Next i
Range("I6:I12") = ""
End Sub
Bu şekil deneyiniz.
 
Sub Dağıt()
Application.ScreenUpdating = False
For i = 6 To 12
a = WorksheetFunction.Sum(Range("D" & i & ":H" & i))
Do Until WorksheetFunction.Sum(Range("D" & i & ":H" & i)) = 10
10
Randomize
sayı = Int(Rnd() * 5 + 4)
küçük = WorksheetFunction.Min(Range("D" & i & ":H" & i))
If Cells(i, sayı) = "x" Or Cells(i, sayı) = "X" Then GoTo 10
If Cells(i, sayı) + 1 = 2 And WorksheetFunction.CountA(Range("D" & i & ":H" & i)) < 5 Then GoTo 10
If 1 + Cells(i, sayı) - küçük = 2 Then GoTo 10
Cells(i, sayı) = Cells(i, sayı) + 1
Loop
Next i
End Sub

Bu kod ise fazlalık olan kişiyi Pazartesiden değil de rastgele bir günden alıyor. Bu daha adil ve benzersiz olur.
 
Aslında her satır bir kişiyi temsil ediyor ve her satırda dağıtım yapılan o kişin haftalık alacağı ekdres saati .O hafta gelmedikleri günleri kaparak kalan günlere ekders saatini dağıtmaya çalışıyorum.
 
Hocam bu kodlar ekders mantığına uymaz. Öğretmen 3 gün gelmedimi o hafta ek ders falan alamaz.
 
Hocam ben o kısımları hallettim sadece ekdersi dağıtırken gelmediği günleri kapatıp öyle dağıtmak istiyorum.
 
Pek idare işlerinden anlamıyorum Hocam. Bunun bir kuralı var sanıyorum. Ben sizin işinize karışmayayım.
 
Hocam kodlardan pek bir şey anlamadım. ff, kk... onlar ne demek oluyor. Ayrıca her öğretmen aynı sayıda derse girmiyor.
 
Hocam fonksiyon olarak her kişinin kendi dağişkenleri ile çağırmayı düşünüyorum. T gelinmeyen gün sayısı, kk ekders günlere dağıtılırken açık gün sayısına göre bölen değer.
 
Tam dağıtma mantığını bilsem bir şeyler yapabilirim. Bazen bakıyorum ek ders çizelgesine 3-4-4-1-2 .... şeklinde. Pazartesi, Salı zaten maaş karşılığı değil mi? Pazartesi, Salıya ek ders yazılıyor mu?
 
Hocam şu anda hafta bütünlüğü uygulanıyor öğretmenin ekdersini geldiği günlere dağıtmanız yeterli. Yani herhangi bir şekli yok. Geldiği her güne verile bilir. Önemli olan sevkli raporlu ve izinli olduğu günlere dağılmaması.
 
Vakit bulursam uğraşırım. Forumda buna benzer çalışmalar olabilir.
 
Geri
Üst