Saatlerin Random Bölünmesi

Katılım
6 Kasım 2020
Mesajlar
3
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
06-11-2022
Herkese Selamlar,

Aşağıdaki tabloda saatleri random ilgili sütunlara dağıtmak istiyorum. Ancak her bir parça 3 saati aşmayacak ve toplamda yine A sütununda verilen saat yapacak.

Bu konuda yardım ederseniz çok memnun olurum. Destek veren herkese şimdiden teşekkür ederim.

229890
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Mesela Saat 10:00:00 için, 4'e bölünecek demek
C-J sütunlarından sadece herhangi 4 ünde ve her biri maksimum 3 saat ve toplamı 10 saat olmak şartıyla dağıtılması mıdır?
 
Katılım
6 Kasım 2020
Mesajlar
3
Excel Vers. ve Dili
2019 Türkçe
Altın Üyelik Bitiş Tarihi
06-11-2022
Evet Ömer Bey. Belirttiğiniz gibi olacak.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Kodlar aşağıda.
Module eklenmiş vaziyette örnek dosyanız (Altın üyesiniz siz ekleyebilirdiniz) ektedir.
C++:
Sub SaatBöl()
Dim TopZaman As Double, MinZaman As Double, MaxZaman As Double, MaxSaat As Integer
MaxSaat = 3
MaxZaman = TimeSerial(MaxSaat, 0, 0) * 1
Range("C2:J" & Range("A" & Rows.Count).End(3).Row).ClearContents
For i = 2 To Range("A" & Rows.Count).End(3).Row
    TopZaman = 0
    Say = 0
    Do Until WorksheetFunction.CountA(Range("C" & i, "J" & i)) = Range("B" & i)
        Do
            Randomize
            Seç = Int(Rnd() * 8) + 1
            If Range("A" & i).Offset(0, 1 + Seç) = "" Then
                Say = Say + 1
                Exit Do
            End If
        Loop
        MinZaman = Range("A" & i) - TopZaman - (Range("B" & i) - Say) * MaxZaman
        If Say = Range("B" & i) Then
            Cells(i, Seç + 2) = Range("A" & i) - TopZaman
        Else
        Randomize
        Cells(i, Seç + 2) = MinZaman + Rnd * (MaxZaman - MinZaman)
        TopZaman = TopZaman + Cells(i, Seç + 2)
        End If
    Loop
Next
End Sub
 

Ekli dosyalar

Üst