Satırları rastgele karıştırmak

Katılım
1 Haziran 2011
Mesajlar
18
Excel Vers. ve Dili
Office 2007
Excel 2007 Türkçe
Benim öğrenmek istediğim konu şu:
B2:B41 hücrelerine sırayla 1'den 40'a kadar sayıları yazıyorum.
Her hücrenin bulunduğu satırdaki sütunlarda yine o hücreyle bağlantılı bazı veriler bulunuyor.
Ben B2:B41 arasında yazılmış 1'den 40'a kadar olan sayıları her defasında rastgele karıştırmak istiyorum. Ama bu sayılar karıştığında da o sayının yanında bulunan bütün veriler de tekrar o sayının yanında kalsın istiyorum.

Yani rastgele karıştırma sonrası, satırlar rastgele karışmış olacak.

Ör: B2=2; C2=34,2; D2=%67; E2=0,74 ..........
Karıştırma işlemi sonrası 2'nin B27'ye gittiğini düşünelim. O zaman görüntünün aşağıdaki gibi olmasını istiyorum.
B27=2; C27=34,2; D27=%67; E27=0,74............

Bu konuda bana yardımcı olursanız sevinirim.
Şimdiden teşekkürler.
 

Mustafa MUTLU

Destek Ekibi
Destek Ekibi
Katılım
24 Temmuz 2008
Mesajlar
1,586
Excel Vers. ve Dili
Ofis 2013 TR 32 Bit
Sub sayi_uret()
ara:
Uret = Int(Rnd() * 40) + 1
aram = WorksheetFunction.CountIf(Range("a1:a41"), Uret)
If aram > 0 Then
GoTo ara
urets = Int(Rnd() * 40) + 1
son = [a65536].End(3).Row + 1
Range("a" & son) = urets
Else
son = [a65536].End(3).Row + 1
Range("a" & son) = Uret
End If
End Sub
Sub say()
Range("A2:A41").Select
Selection.ClearContents
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
Call sayi_uret
End Sub

Sayfaya bir düğme ata
Say makrosunuda düğmeye ata.
Her tıkladığında sayıları silip yenisini atar.

Verilerini çağırmak içinde düşey ara formülünü kullanabilirsin...
 
Katılım
1 Haziran 2011
Mesajlar
18
Excel Vers. ve Dili
Office 2007
Excel 2007 Türkçe
teşekkür

Teşekkür ediyorum herkese,
ayrıca sayın Leumruk belirttiğiniz link'teki çözümü şimdi gördüm. Bu siteye yeni üye olduğum için işleyişi daha tam kavrayamadım. Soruları nereye nasıl göndermem gerektiği konusunda bu nedenle biraz sıkıntı yaşıyorum.

Bir de çözümünüzle ilgili biraz daha katkı alabilir miyim?

Uygulamayı gerçekleştirdiğimde karışan sayıların yanında yer alan sadece 3 hücredeki veriler ilgili yerlere taşınıyor. Tüm satırın bu şekilde yer değiştirmesi için nasıl bir düzeltme yapmalıyım?

Tekrar teşekkür ederim...
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,471
Excel Vers. ve Dili
Office 2010 & 2013 tr
Merhaba,
Kırmızı kısımla belirttiğim sütunun yerine sizin tablonuz hangi sütunda bitiyorsa o sütunun adını yazın. "4" rakamı yerine de son sütun numaranızı yazacaksınız. Örneğin "d" 4. sırada olduğu için ben 4 yazdım.
Kod:
Sub Karistir()
Dim dz As Variant
[COLOR="Blue"]dz = Range("a1:[COLOR="DarkRed"]d[/COLOR]" & [a65536].End(3).Row)[/COLOR]
Randomize
For x = UBound(dz, 1) To 1 Step -1
  sayi = Int((x * Rnd) + 1)
    For y = 1 To [COLOR="DarkRed"]4[/COLOR]
        hcr = dz(sayi, y)
        dz(sayi, y) = dz(x, y)
        dz(x, y) = hcr
    Next
Next
[COLOR="Blue"]Range("a1:[COLOR="DarkRed"]d[/COLOR]" & [a65536].End(3).Row) = dz[/COLOR]
End Sub
 
Üst