DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub rastgele()
Dim col As Collection, i As Long, sat As Long, indis As Long
Set col = New Collection
Sheets("Sheet2").Range("A2:A65536").ClearContents
Sheets("Sheet1").Select
sat = 2
For i = 1 To Cells(65536, "A").End(xlUp).Row
col.Add Cells(i, "A").Value
Next
Randomize Timer
For i = 1 To 20
indis = Int(Rnd() * col.Count) + 1
Sheets("Sheet2").Cells(sat, "A").Value = col.Item(indis)
sat = sat + 1
col.Remove (indis)
Next i
MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N"
End Sub
Dosyanız ektedir.
Kod:Sub rastgele() Dim col As Collection, i As Long, sat As Long, indis As Long Set col = New Collection Sheets("Sheet2").Range("A2:A65536").ClearContents Sheets("Sheet1").Select sat = 2 For i = 1 To Cells(65536, "A").End(xlUp).Row col.Add Cells(i, "A").Value Next Randomize Timer For i = 1 To 20 indis = Int(Rnd() * col.Count) + 1 Sheets("Sheet2").Cells(sat, "A").Value = col.Item(indis) sat = sat + 1 col.Remove (indis) Next i MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N" End Sub
Aşağıdaki kırmızı satırı güncelleyin.Teşekkürler seçilen rasgele sayıları 20den 50ye çıkarmak istersem ayarlamayı ben nasıl yapabilirim?
Sub rastgele()
Dim z As Integer, i As Long, sat As Long, indis As Long
Dim k As Range, col As Collection
Set col = New Collection
Sheets("Sayfa1").Select
For i = 1 To 20
Sheets(i).Range("E2:F65536").ClearContents
Next
For i = 1 To Cells(65536, "A").End(xlUp).Row
col.Add Cells(i, "A").Value
Next
Randomize Timer
For i = 1 To 20
indis = Int(Rnd() * col.Count) + 1
Set k = Sheets("Sayfa1").Range("A:A").Find(col.Item(indis), , xlValues, xlWhole)
For z = 1 To k.Offset(0, 1).Value
sat = Sheets(z).Cells(65536, "E").End(xlUp).Row + 1
Sheets(z).Cells(sat, "E").Value = col.Item(indis)
Sheets(z).Cells(sat, "F").Value = "'" & z & "/" & k.Offset(0, 1).Value
Next
col.Remove (indis)
Next i
MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N"
End Sub
Görememişim.Benim dosyam varmı acaba?
Sub rastgele2()
Dim col As Collection, i As Long, sat As Long, indis As Long
Dim s1 As Worksheet, s2 As Worksheet, k As Range
Set s1 = Sheets("Çekilişe Katılanlar")
Set s2 = Sheets("Database")
Set col = New Collection
Sheets("Kazanan kişiler ve cep telefonu").Select
Range("A2:C65536").ClearContents
sat = 2
For i = 1 To s1.Cells(65536, "A").End(xlUp).Row
col.Add s1.Cells(i, "A").Value
Next
Randomize Timer
For i = 1 To 20
indis = Int(Rnd() * col.Count) + 1
Cells(sat, "A").Value = col.Item(indis)
Set k = s2.Range("A2:A65536").Find(col.Item(indis), , xlValues, xlWhole)
If Not k Is Nothing Then
Cells(sat, "B").Value = k.Offset(0, 1).Value
Cells(sat, "C").Value = k.Offset(0, 2).Value
End If
sat = sat + 1
col.Remove (indis)
Next i
Range("A2:C65536").Sort key1:=Range("C2"), key2:=Range("B2"), key3:=Range("A2")
MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N"
End Sub
Rica ederim.Çok teşekkürler..
Sub rastgele()
Dim col As Collection, i As Long, sat As Long, indis As Long
Set col = New Collection
Sheets("Sheet2").Range("A2:A65536").ClearContents
Sheets("Sheet1").Select
sat = 2
For i = 1 To Cells(65536, "A").End(xlUp).Row
col.Add Cells(i, "A").Value
Next
Randomize Timer
For i = 1 To 50
indis = Int(Rnd() * col.Count) + 1
Sheets("Sheet2").Cells(sat, "A").Value = col.Item(indis)
sat = sat + 1
col.Remove (indis)
Next i
MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N"
End Sub
Hocam,
Toplamda 50 rastgele kura numarası seçiyoruz bu tamam.
Ama benim istediğim bu 50 numarayı adaletli olarak seçmesi. Yani databasedeki her isimden en az bir tane seçmeli ve mümkün olduğu kadar eşit sayıda seçmeli. Mesela database de toplam 25 kişi varsa random seçerken her isimden 2 adet seçmesi. Teşekkürler.
Kod:Sub rastgele() Dim col As Collection, i As Long, sat As Long, indis As Long Set col = New Collection Sheets("Sheet2").Range("A2:A65536").ClearContents Sheets("Sheet1").Select sat = 2 For i = 1 To Cells(65536, "A").End(xlUp).Row col.Add Cells(i, "A").Value Next Randomize Timer For i = 1 To 50 indis = Int(Rnd() * col.Count) + 1 Sheets("Sheet2").Cells(sat, "A").Value = col.Item(indis) sat = sat + 1 col.Remove (indis) Next i MsgBox "İşlem tamamdır.", vbOKOnly + vbInformation, "E V R E N" End Sub
Malesef aynı isimden çok yazmak zorundayım. Çünkü bir kişi birden fazla numara almış oluyor.
![]()