• DİKKAT

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

Verileri ratgele karıştırmak

Katılım
27 Ocak 2016
Mesajlar
26
Excel Vers. ve Dili
2013 türkçe
Merhaba.

A1:a13 arasında isimler,b1:b13 arasında koli numaraları var.bu verileri yine isimler a1:a13 aynı şekilde koli numaraları b1:b13'te olacak şekilde rastgele nasıl karıştırabilirim?
 
Kod:
Sub karistir()
    sonSat = Cells(Rows.Count, "A").End(3).Row
    For i = 1 To sonSat * 2
basla1:
        say1 = Int(Rnd() * sonSat) + 1
        If say1 < 1 Or say1 > sonSat Then GoTo basla1
basla2:
        say2 = Int(Rnd() * sonSat) + 1
        If say2 < 1 Or say2 > sonSat Or say1 = say2 Then GoTo basla2
        tmp = Cells(say1, "b").Value
        Cells(say1, "b").Value = Cells(say2, "b").Value
        Cells(say2, "b").Value = tmp
    Next i
End Sub
 
teşekkür ederim.ancak bu sadece b sütununu karıştırıyor.
 
Merhaba.

A1:a13 arasında isimler,b1:b13 arasında koli numaraları var.bu verileri yine isimler a1:a13 aynı şekilde koli numaraları b1:b13'te olacak şekilde rastgele nasıl karıştırabilirim?

Yazdığınızdan öyle anladım.
Kod:
Sub karistir()
    sonSat = Cells(Rows.Count, "A").End(3).Row
    For i = 1 To sonSat * 2
basla1:
        say1 = Int(Rnd() * sonSat) + 1
        If say1 < 1 Or say1 > sonSat Then GoTo basla1
basla2:
        say2 = Int(Rnd() * sonSat) + 1
        If say2 < 1 Or say2 > sonSat Or say1 = say2 Then GoTo basla2
        tmp = Cells(say1, "A").Resize(, 2).Value
        Cells(say1, "A").Resize(, 2).Value = Cells(say2, "A").Resize(, 2).Value
        Cells(say2, "A").Resize(, 2).Value = tmp
    Next i
End Sub
 
şimdi fark ettim. karıştır dediğimde a1 in karşındaki b1 aynı kalıyor. yani a1 15. satıra gitse bile b1 de 15. satıra gidiyor. iki sütünu bağımsız olarak nasıl karıştırabiliriz?
 
şimdi fark ettim. karıştır dediğimde a1 in karşındaki b1 aynı kalıyor. yani a1 15. satıra gitse bile b1 de 15. satıra gidiyor. iki sütünu bağımsız olarak nasıl karıştırabiliriz?
Kod:
Sub karistir()
    sonSat = Cells(Rows.Count, "A").End(3).Row
    For sut = 1 To 2
        For i = 1 To sonSat * 2
            say1 = sayiUret(1, sonSat)
basla:
            say2 = sayiUret(1, sonSat)
            If say1 = say2 Then GoTo basla
            tmp = Cells(say1, sut).Value
            Cells(say1, sut).Value = Cells(say2, sut).Value
            Cells(say2, sut).Value = tmp
        Next i
    Next sut
End Sub
Function sayiUret(alt, ust)
    Randomize Timer
basla:
    sayi = Int(Rnd() * ust) + 1
    If sayi < alt Or sayi > ust Then GoTo basla
    sayiUret = sayi
End Function
 
Geri
Üst