• DİKKAT

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

Makroda rasgele sıralama

Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro
Arkadaşlar merhaba,

Sizlerin tecrübesi ve yardımına ihtiyaç duymaktayım. Yardımcı olursanız çok sevinirim.

Bu işlemi makroda yapmam gerekiyor*

B sütununda Mavi Mavi Mavi Kırmızı Kırmızı Sarı Sarı Sarı Sarı şeklinde aşağıya doğru giden renklerim var. Bu renkleri c sütununda rasgele karıştırmak istiyorum.

Örnek olarak B Sütunu bu şekilde görünüyor
Mavi
Mavi
Mavi
Kırmızı
Kırmızı
Sarı
Sarı
Sarı

İşkle sonrası olması gereken C sütunu bu şekilde rasgele sıralanmış olmalı
Kırmızı
Sarı
Sarı
Mavi
Kırmızı
Mavi
Mavi
Kırmızı
Mavi
Sarı
 
Merhaba,
Deneyiniz...
Kod:
Sub kod()
s = Cells(Rows.Count, "B").End(3).Row
dz = Range("B1:B" & s).Value
For a = LBound(dz) To UBound(dz)
    Randomize
    b = Int(Rnd * UBound(dz)) + 1
    x = dz(a, 1)
    dz(a, 1) = dz(b, 1)
    dz(b, 1) = x
Next
Range("C1:C" & s).Value = dz
End Sub
 
Hocam maalesef çalışmadı. daha doğrusu bir tane yazdırıyor sonra 5 satır boş bir tane daha yazdırıyor sonra gene aynı . arada #YOK yazıyor.
Yapabileceğimiz bir işlem var mıdır başka
 
Örnek bir dosya paylaşırsanız dosya üzerinde çalışalım.
Dosyanızı paylaşım sitelerine yükleyip link vererek paylaşabilirsiniz.
 
Örnek bir dosya paylaşırsanız dosya üzerinde çalışalım.
Dosyanızı paylaşım sitelerine yükleyip link vererek paylaşabilirsiniz.

Hocam çok teşekkür ederim. Çok amatör yapıyorum zaten, desteğiniz çok iyi olacak,

Sizin yolladığınız kodlar makronun en alt kısmında,

 
Hocam çok teşekkür ederim. Çok amatör yapıyorum zaten, desteğiniz çok iyi olacak,

Sizin yolladığınız kodlar makronun en alt kısmında,



B sütünunda sırayla yazılan renkler c sütununa karışık şekilde yazılması gerekiyor.
 
Paylaştığınız dosyanın B sütunu tamamen boş.
Dilerseniz dosyanızı yeniden yükleyin. Dilerseniz de yukarıda paylaştığım kodun boş dosyaya uygulanmış halini şuradan indirip incelebilirsiniz.
 
Dosyanız bu şekildeyse paylaştığım kodun ilk satır haricinde doğru çalışması gerekiyordu.
Acaba dosyanızda B sütununda formüller olabilir mi?
Bir de emin olmak için soruyorum değerler C2 hücresinden aşağı doğru yazılacak değil mi?
 
Dosyanız bu şekildeyse paylaştığım kodun ilk satır haricinde doğru çalışması gerekiyordu.
Acaba dosyanızda B sütununda formüller olabilir mi?
Bir de emin olmak için soruyorum değerler C2 hücresinden aşağı doğru yazılacak değil mi?

Herhangi bir formül bulunmuyor, evet doğru hocam C2 hücresinden başlıyor.
 
Aşağıdaki kodları deneyiniz...
Kod:
Sub kod()
Dim a As Long, b As Long
Dim x As String
ReDim dz(0)
For a = 2 To Cells(Rows.Count, "B").End(3).Row
    If Cells(a, "B") <> "" Then
        ReDim Preserve dz(b)
        dz(b) = Cells(a, "B")
        b = b + 1
    End If
Next
For a = LBound(dz) To UBound(dz)
    Randomize
    b = Int(Rnd * UBound(dz))
    x = dz(a)
    dz(a) = dz(b)
    dz(b) = x
Next
Range("C2").Resize(UBound(dz) + 1).Value = Application.Transpose(dz)
End Sub
 
Sebebini bilemeyeceğim, bende hata vermiyor.
Dosyanız şurada : LİNK
 
Son düzenleme:
If Cells(a, "B") <> "" Then
bu satırda hata veriyor.
Bu satırı aşağıdaki şekilde değiştirip deneyiniz.
If Not IsError(Cells(a, "B")) And Not IsEmpty(Cells(a, "B")) Then
 
Geri
Üst