• DİKKAT

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

Tablo Düzenlemesi

Katılım
16 Aralık 2009
Mesajlar
68
Excel Vers. ve Dili
03 türkçe
Selamlar;
Ekte bulunan örnek dosyada, sayfa1 de yer alan verileri sayfa2 deki gibi düzenlemek istiyorum.
Buna göre;
  • A sütununda aynı ID ye sahip olan satır gruplarında, D sütununda yer alan isimler kendi aralarında alfabetik sırayla dizilmeli,

  • D sütununda önce a harfi ile başlayan grup, sonra b harfiyle başlayan grup şeklinde genel bir düzenleme olmalı,

  • A sütununda aynı değeri taşıyan satır grupları arasında 1 boş satır olmalı şeklinde bir düzenlemeye ihtiyacım var.
Orijinal tablomda 9000 kadar satır bulunmaktadır. yardımcı olacak arkadaşlara şimdiden çok teşekkür ederim.
 

Ekli dosyalar

Merhaba,
Doğru anlamışımdır umarım, aşağıdaki kodları bir modüle kopyalayıp deneyiniz.

Kod:
Public Sub Duzenle()

Dim i As Long
Dim j As Integer

Application.ScreenUpdating = False

i = Cells(Rows.Count, "A").End(3).Row
j = Range("A1").End(xlToRight).Column

Range(Cells(2, 1), Cells(i, j)).Sort Key1:=[A1], Key2:=[D1]

For i = i To 3 Step -1
    If Cells(i, "A") <> Cells(i - 1, "A") Then Rows(i).Insert
Next i

Application.ScreenUpdating = True

MsgBox "Tamamdır..."

End Sub
 
Merhaba,
Doğru anlamışımdır umarım, aşağıdaki kodları bir modüle kopyalayıp deneyiniz.

Kod:
Public Sub Duzenle()

Dim i As Long
Dim j As Integer

Application.ScreenUpdating = False

i = Cells(Rows.Count, "A").End(3).Row
j = Range("A1").End(xlToRight).Column

Range(Cells(2, 1), Cells(i, j)).Sort Key1:=[A1], Key2:=[D1]

For i = i To 3 Step -1
    If Cells(i, "A") <> Cells(i - 1, "A") Then Rows(i).Insert
Next i

Application.ScreenUpdating = True

MsgBox "Tamamdır..."

End Sub


Üstat elinize sağlık, çok güzel çalışıyor. Ancak tablo düzenli hale gelince ön görmediğim bir sorun ortaya çıktı. Şayet gruplar sadece aynı isimden oluşuyorsa o grubu silebilir miyiz? Örnek dosyayı ekledim. Teşekkürler şimdiden.
 

Ekli dosyalar

Son düzenleme:
Merhaba,
Önceki düzenleme kodundan sonra aşağıdaki kodları çağırınız..

Kod:
Sub Makro()
    
Dim i   As Long
Dim j   As Long
Dim bsr As Long
Dim adt As Integer

Application.ScreenUpdating = False

i = Cells(Rows.Count, "A").End(3).Row

j = 2

Do
    bsr = j
    j = Range("D" & bsr).End(xlDown).Row
    If j = Rows.Count Then Exit Do
    adt = j - bsr + 1
    If adt > 1 Then
        If WorksheetFunction.CountIf(Range("D" & bsr & ":D" & j), Range("D" & bsr)) = adt Then
            Rows(bsr & ":" & j + 1).Delete
            j = bsr
        Else
            j = j + 2
        End If
    End If
Loop Until j > i
    
Application.ScreenUpdating = True

MsgBox "işlem tamamdır."
End Sub
 
Merhaba,
Önceki düzenleme kodundan sonra aşağıdaki kodları çağırınız..

Kod:
Sub Makro()
   
Dim i   As Long
Dim j   As Long
Dim bsr As Long
Dim adt As Integer

Application.ScreenUpdating = False

i = Cells(Rows.Count, "A").End(3).Row

j = 2

Do
    bsr = j
    j = Range("D" & bsr).End(xlDown).Row
    If j = Rows.Count Then Exit Do
    adt = j - bsr + 1
    If adt > 1 Then
        If WorksheetFunction.CountIf(Range("D" & bsr & ":D" & j), Range("D" & bsr)) = adt Then
            Rows(bsr & ":" & j + 1).Delete
            j = bsr
        Else
            j = j + 2
        End If
    End If
Loop Until j > i
   
Application.ScreenUpdating = True

MsgBox "işlem tamamdır."
End Sub


Elinize sağlık çok teşekkür ederim...
 
Geri
Üst