Alt alta olan verileri yanyana belirli adette yazdırma

Katılım
29 Aralık 2013
Mesajlar
22
Excel Vers. ve Dili
Excel 2016
Altın Üyelik Bitiş Tarihi
26/10/2018
Merhabalar a sütununda alt alta 10.000 adet sayılar mevcut, ben bunları sırası bozulmayacak şekilde sıralamak istiyorum.

sıralamam ilk 20 adet sayıyı yan yana hücre sıralayacak, sonra bir alt hücreden devam ederek bu işlem tamamlanacak

bu işlemi nasıl gerçekleştirebilirim ? yardımlarınız için şimdiden teşekkürler.

örnek sıralama biçimi

 

MusaPEKEL

Altın Üye
Katılım
29 Ağustos 2016
Mesajlar
65
Excel Vers. ve Dili
2013
Altın Üyelik Bitiş Tarihi
16-01-2027
Merhabalar a sütununda alt alta 10.000 adet sayılar mevcut, ben bunları sırası bozulmayacak şekilde sıralamak istiyorum.

sıralamam ilk 20 adet sayıyı yan yana hücre sıralayacak, sonra bir alt hücreden devam ederek bu işlem tamamlanacak

bu işlemi nasıl gerçekleştirebilirim ? yardımlarınız için şimdiden teşekkürler.

örnek sıralama biçimi

Kod:
Sub SayilariSutunlaraSiralayarakYerlestir()
    Dim ws As Worksheet
    Dim colToSort As Integer
    Dim rowCount As Long, colCount As Long
    Dim i As Long, j As Long
    Dim valueArray() As Variant

    ' Çalışmak istediğiniz sayfayı ve sütunu belirtin
    Set ws = Sheets("Sayfa1") ' Sayfa adını güncelleyin
    colToSort = 2 ' Sıralanacak sütunu belirtin (A sütunu)

    ' Sıralama yapılacak sütunun son satırını bulun
    lastRow = ws.Cells(ws.Rows.Count, colToSort).End(xlUp).Row

    ' Sütunu bir diziye alın
    valueArray = ws.Range(ws.Cells(1, colToSort), ws.Cells(lastRow, colToSort)).Value

    ' Diziyi sıralayın
    Call BubbleSort(valueArray)

    ' Sıralı değerleri her satırda 20 adet olacak şekilde yerleştirin
    rowCount = WorksheetFunction.RoundUp(lastRow / 20, 0)
    colCount = 20

    For i = 1 To rowCount
        For j = 1 To colCount
            If (i - 1) * colCount + j <= lastRow Then
                ws.Cells(i, j + 1).Value = valueArray((i - 1) * colCount + j, 1)
            End If
        Next j
    Next i
End Sub

Sub BubbleSort(arr() As Variant)
    Dim i As Long, j As Long
    Dim temp As Variant

    For i = LBound(arr) To UBound(arr) - 1
        For j = i + 1 To UBound(arr)
            If arr(i, 1) > arr(j, 1) Then
                temp = arr(i, 1)
                arr(i, 1) = arr(j, 1)
                arr(j, 1) = temp
            End If
        Next j
    Next i
End Sub
 

ÖmerBey

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2012
Mesajlar
4,340
Excel Vers. ve Dili
2007 Türkçe
Merhaba,
Alternatif olarak formülle yapmak isterseniz aşağıdaki formülü hücreye uygulayıp sağa ve aşağı çekerek çoğaltınız.
Kod:
=İNDİS($A:$A;20*(SATIR(A1)-1)+SÜTUN(A1))
 

Erkan Akayay

Altın Üye
Katılım
8 Aralık 2006
Mesajlar
405
Excel Vers. ve Dili
Ofis 365 TR 64 Bit
Altın Üyelik Bitiş Tarihi
21-11-2028
Kod:
Sub Gruplama()
Dim kaynak(), hedef()
Dim sayac As Integer, sutun As Integer
sutun = InputBox("Kaç sütun olacak?")
kaynak = Application.Transpose(Range("A1:A" & Range("A1").End(xlDown).Row).Value2)
ReDim hedef(Application.RoundUp((Range("A1").End(xlDown).Row / sutun), 0) - 1, 1 To sutun + 1)
   
    For dizisatir = LBound(hedef, 1) To UBound(hedef, 1)
        For dizisutun = LBound(hedef, 2) To UBound(hedef, 2) - 1
            sayac = sayac + 1
            hedef(dizisatir, dizisutun) = kaynak(sayac)
            If sayac = Range("A1").End(xlDown).Row - 1 Then Exit For
        Next dizisutun
       
    Next dizisatir
Range("D4").Resize(UBound(hedef, 1) + 1, sutun) = hedef
Erase kaynak: Erase hedef: sayac = Empty: dizisatir = Empty: dizisutun = Empty: sutun = Empty
End Sub
 
Üst