hücre içi karıştırma

Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Arkadaşlar merhaba,
Bir hücre içerisinde aşağıdaki değerler var.

Ahmet
Mehmet
Ali
Veli

Fakat bunlar bir hücre içerisinde alt altta yazılı (notepad'den yapıştırılmış) yani her biri bir satırda değil.

Ben bu hücreyi aşağıya doğru çektikçe, her satırda içeriğin karışmasını istiyorum. Örneğin bir alt satırdaki hücrenin içeriği :
Veli
Mehmet
Ali
Ahmet ... olmalı

bir alt satır ise;
Ali
Mehmet
Veli
Ahmet

bu şekilde bir karıştırma yapsın isyorum. Şunu belirteyim gerekirse her bir isimden sonra virgül koyabilirim yani ilk satırda hücrenin içeriği aşağıdaki gibi olabilir.
Ahmet,
Mehmet,
Ali,
Veli,

Yardımlarınız için şimdiden teşekkürler.
 

Haluk

𐱅𐰇𐰼𐰚
Katılım
7 Temmuz 2004
Mesajlar
12,271
Excel Vers. ve Dili
64 Bit 2010 - İngilizce
+
Google Sheets
+
JScript
Veriler tekrar edebilir mi?

Örneğin;

Ali
Veli
Veli
Ali

gibi ....

.
 

leumruk

Uzman
Uzman
Katılım
15 Nisan 2007
Mesajlar
3,469
Excel Vers. ve Dili
Office 2010 & 2013 tr
Selamlar,
Örneği inceleyiniz.
Kod:
=KIRP(PARÇAAL(YERİNEKOY(A$1;" ";YİNELE(" ";UZUNLUK($A$1)));(MOD(AŞAĞIYUVARLA(MOD((SATIR(A1)-1)/4;4)+1;0)+SATIR(A1)-2;4)+1)*UZUNLUK($A$1)-(UZUNLUK($A$1)-1);UZUNLUK($A$1)))
 

Ekli dosyalar

Son düzenleme:

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,332
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Alternatif olarak aşağıdaki kodu deneyiniz.

Kod:
Option Base 1
Option Explicit

Sub KARIŞTIR()
    Dim X As Long, Y As Long, Veri As Variant, Say As Long
    Dim Sayi As Variant, Dizi As Object, Liste As String
    
    Randomize Timer

    Set Dizi = CreateObject("Scripting.Dictionary")
    Veri = Split(Range("A1"), Chr(10))
    Say = UBound(Veri) + 1
    
    For X = 1 To 100
        For Y = 1 To Say
10          Sayi = Int(Say * Rnd() + 1)
            If Dizi.Count = Say Then GoTo 20
            If Not Dizi.Exists(Sayi) Then
                Dizi.Add Sayi, Sayi
            Else
                GoTo 10
            End If
        Next
    
20      For Each Sayi In Dizi.Items
            Liste = IIf(Liste = "", Veri(Sayi - 1), Liste & Chr(10) & Veri(Sayi - 1))
        Next
        
        Cells(X + 1, 1) = Liste
        Liste = ""
        Dizi.RemoveAll
    Next
    
    Set Dizi = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Katılım
16 Mart 2007
Mesajlar
46
Excel Vers. ve Dili
2013
Option Base 1 Option Explicit Sub KARIŞTIR() Dim X As Long, Y As Long, Veri As Variant, Say As Long Dim Sayi As Variant, Dizi As Object, Liste As String Randomize Timer Set Dizi = CreateObject("Scripting.Dictionary") Veri = Split(Range("A1"), Chr(10)) Say = UBound(Veri) + 1 For X = 1 To 100 For Y = 1 To Say 10 Sayi = Int(Say * Rnd() + 1) If Dizi.Count = Say Then GoTo 20 If Not Dizi.Exists(Sayi) Then Dizi.Add Sayi, Sayi Else GoTo 10 End If Next 20 For Each Sayi In Dizi.Items Liste = IIf(Liste = "", Veri(Sayi - 1), Liste & Chr(10) & Veri(Sayi - 1)) Next Cells(X + 1, 1) = Liste Liste = "" Dizi.RemoveAll Next Set Dizi = Nothing MsgBox "İşleminiz tamamlanmıştır.", vbInformation End Sub
teşekkürler çalıştı
 
Üst