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ı
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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
 
Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro
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
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Örnek bir dosya paylaşırsanız dosya üzerinde çalışalım.
Dosyanızı paylaşım sitelerine yükleyip link vererek paylaşabilirsiniz.
 
Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro
Ö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,

 
Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro
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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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.
 
Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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?
 
Katılım
18 Aralık 2021
Mesajlar
8
Excel Vers. ve Dili
makro
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.
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Sebebini bilemeyeceğim, bende hata vermiyor.
Dosyanız şurada : LİNK
 
Son düzenleme:

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
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
 
Üst