Satirlar

Katılım
2 Mayıs 2006
Mesajlar
226
Excel Vers. ve Dili
office 2003
Almanca
slm

bu konu ile ilgili konulari aradim , ama bulamadim

soru :

A B C D E F

isim Soyisim x y t m


böyle bir liste varsayalim asagi dogr 50 ye kadar gidiyor.

bunlari satir olarak rastgele karistirabilirmiyiz Satirlari tabii bilgiler degismeyecek.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Aşağıdaki gibi bir kod kullanılabilir. Sorunuzu bir çok yolla çözmek mümkün aslında... Ben bir Recordset nesnesinde, Cursor'ı rastgele harekete ettirerek sonuç aldım. Ama siz, bir dizi değişkene veya bir kolleksiyona da bu işleri yaptırabilirsiniz. Veyahut, formüller vasıtası ile yapılabilir.

Çalışan kodlar aşağıdaki gibidir.

NOT : Eğer kodları kopyalama usulu çalıştıracaksanız; öncelikle; Microsoft Activex Data Object Recordset X.X Library'nin referanslara ilave edilmesi gerekmekte.

Kod:
Sub Karistir()
    Dim rs As ADOR.Recordset
    Dim i As Integer
    Dim j As Integer
    Dim istr As Integer
    Dim iRsStr As Integer
    Dim rng As Range
    Dim rngHcr As Range
    
    Set rs = New ADOR.Recordset
    
    With rs
        With .Fields
            For i = 1 To 6: .Append "Sutun" & i, adChar, 250: Next i
        End With
        
        .CursorLocation = adUseClient
        .CursorType = adOpenDynamic
        
        .Open
    
        Set rng = Range("A1:F" & ActiveSheet.UsedRange.Rows.Count)
        
        For Each rngHcr In rng.Cells
            If j = 6 Then j = 0
            
            If j = 0 Then
                .AddNew
            End If
            
            .Fields(j).Value = CStr(rngHcr)
            
            j = j + 1
        Next
    
        .MoveFirst
        
        Do Until .RecordCount = 0
            
            Randomize
            iRsStr = CInt(.RecordCount * Rnd())
            
            If iRsStr = .RecordCount Then iRsStr = iRsStr - 1
            
            .Move (iRsStr)
            
            istr = istr + 1
            
            For j = 0 To 5
                Cells(istr, j + 8) = Trim(.Fields(j).Value)
            Next
           
           .Delete adAffectCurrent
           .MoveFirst
        Loop
        
        .Close
    
    End With
    
    Set rs = Nothing
    Set rng = Nothing
End Sub
 

Ekli dosyalar

Katılım
2 Mayıs 2006
Mesajlar
226
Excel Vers. ve Dili
office 2003
Almanca
slm

cevapiniza tesekkürler ama benim demek istedigim, bir örnek dosya ekliyorum,
burada sorularin yerleri degisicek sekilde olmasini istiyorum. yani 2. sutundaki soru herhangi baska satira gelecek .her soru yerleri siralamasi degisik olacak sekilde .

saygilar
 

Ekli dosyalar

Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Ben ne demek istdeiğinizi anlamadım. size gönderdiğim örnete, A-F sütunlarında bulunan verilerin hepsi, aynen H-M sütunları arasına çekiliyor. Tabi karıştırılarak ...

Eğer siz, bu karışımın aynı liste üzerinde olmasını istiyorsanız, aşağıdaki bölümde kırmızı ile gösterilen yerdeki 8'i, 1 yapın, deneyin.

Kod:
....
            For j = 0 To 5
                Cells(istr, j + 1) = Trim(.Fields(j).Value)
            Next
....
 
Katılım
2 Mayıs 2006
Mesajlar
226
Excel Vers. ve Dili
office 2003
Almanca
cok güzel calisiyor, tesekkürler ama birinci sütün degismesini istemiyorum. 1. Sütün baslik olarak kalmasi icin.
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
O zamanda, yukarıda revize ettiğimiz dögüyü şu şekilde bir kez daha revize ediniz.

Kod:
            For j = [COLOR=red][B]1[/B][/COLOR] To 5
                Cells(istr, j + 1) = Trim(.Fields(j).Value)
            Next
 
Katılım
2 Mayıs 2006
Mesajlar
226
Excel Vers. ve Dili
office 2003
Almanca
degisik bir metodla buldum, fakat baska sayfalardan bu kodu calistiramiyorum.Kitabin acilisinda kod calisiyor.
 

Ekli dosyalar

Üst