ahmetyuksel
Site Gezgini
- Mesajlar
- 54
merhaba arkadaşlar böyle bir problemimiz var. şimdiden çözümleriniz için teşekkürler
Son düzenleme:
Sub RastgeleDagit()
Dim hedefToplam As Integer
Dim satirSayisi As Integer
Dim i As Integer, fark As Integer
hedefToplam = 24
satirSayisi = 10
Dim dizi() As Integer
ReDim dizi(1 To satirSayisi)
' İlk rastgele değerler (1–3)
For i = 1 To satirSayisi
dizi(i) = WorksheetFunction.RandBetween(1, 3)
Next i
' Toplam farkını ayarla
fark = hedefToplam - WorksheetFunction.Sum(dizi)
Do While fark <> 0
i = WorksheetFunction.RandBetween(1, satirSayisi)
If fark > 0 And dizi(i) < 3 Then
dizi(i) = dizi(i) + 1
fark = fark - 1
ElseIf fark < 0 And dizi(i) > 1 Then
dizi(i) = dizi(i) - 1
fark = fark + 1
End If
Loop
' Sonuçları F sütununa yaz
For i = 1 To satirSayisi
Cells(i + 1, 6).Value = dizi(i)
Next i
End Sub
Teşekkürler cevabınız için. Hocam belki problemi tam anlatamadım. Toplam değer en fazla 30 olabilir. Yani sabit değil. Yani toplam değere göre (1-3) not dağılımı yapacak random. Toplam değer B12 hücresinde yazılan değer. Excel halinde olursa iyi olur. TşklerKod:Sub RastgeleDagit() Dim hedefToplam As Integer Dim satirSayisi As Integer Dim i As Integer, fark As Integer hedefToplam = 24 satirSayisi = 10 Dim dizi() As Integer ReDim dizi(1 To satirSayisi) ' İlk rastgele değerler (1–3) For i = 1 To satirSayisi dizi(i) = WorksheetFunction.RandBetween(1, 3) Next i ' Toplam farkını ayarla fark = hedefToplam - WorksheetFunction.Sum(dizi) Do While fark <> 0 i = WorksheetFunction.RandBetween(1, satirSayisi) If fark > 0 And dizi(i) < 3 Then dizi(i) = dizi(i) + 1 fark = fark - 1 ElseIf fark < 0 And dizi(i) > 1 Then dizi(i) = dizi(i) - 1 fark = fark + 1 End If Loop ' Sonuçları F sütununa yaz For i = 1 To satirSayisi Cells(i + 1, 6).Value = dizi(i) Next i End Sub
