Farklı sayfalardaki verileri benzersiz şekilde alt alta listeleme

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Selamlar. Ekteki örnekte olduğu gibi farklı sayfalarda bazıları da mükerrer olan verilerim var. Bunların başka sayfaya formül kullanarak benzersiz olarak alt alta aktarılması sağlanabilir mi. Excel 2010 kullanıyorum.
 

Ekli dosyalar

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Formül kullanmak işleri zorlaştırabilir.

Makro ile daha pratik olacaktır.

Arama Sonuçları
Hocam tüm örnekleri inceledim ama benim listeme uygun bir örnek bulamadım. Çünkü bazı örnekler sadece bir sütunu listeliyor, bazıları benim istediğim gibi birden fazla hücreyi kopyalıyor fakat benzersiz kayıtları süzmüyor. Rica etsem ekteki örneği inceler misiniz. Çünkü 3 hücre toplam sayfasına listelenecek, benzersiz kayıtlar kimlik numarasına göre belirlenecek.
 

Ekli dosyalar

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
@Korhan Ayhan üstadın affına sığınarak, aşağıdaki kodu öneriyorum.
C++:
Sub Benzersiz()
    Application.ScreenUpdating = False
    Set s1 = Sheets("TOPLAM")
    s1.Range("B8:D" & Rows.Count).ClearContents
For i = 2 To Sheets.Count
    ss = Sheets(i).Cells(Rows.Count, 4).End(3).Row
    ss1 = s1.Cells(Rows.Count, 2).End(3).Row + 1
    Sheets(i).Range("B8:D" & ss).Copy s1.Range("B" & ss1)
Next i
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).RemoveDuplicates 1, xlNo
    Application.ScreenUpdating = True
End Sub
 

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Merhaba,
@Korhan Ayhan üstadın affına sığınarak, aşağıdaki kodu öneriyorum.
C++:
Sub Benzersiz()
    Application.ScreenUpdating = False
    Set s1 = Sheets("TOPLAM")
    s1.Range("B8:D" & Rows.Count).ClearContents
For i = 2 To Sheets.Count
    ss = Sheets(i).Cells(Rows.Count, 4).End(3).Row
    ss1 = s1.Cells(Rows.Count, 2).End(3).Row + 1
    Sheets(i).Range("B8:D" & ss).Copy s1.Range("B" & ss1)
Next i
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).RemoveDuplicates 1, xlNo
    Application.ScreenUpdating = True
End Sub
Hocam teşekkür ederim harika bir çalışma olmuş. Sanırım eklemeyi unuttuğum bir şey oldu. Eklediğim örnekte 4 ay var ama asıl listem Ocak ile Aralık ayları arasında 12 ay var. Bir de aralığı B8 ile D500 arasında yapmak istersek nasıl düzenleme yapabiliriz. Ben koddaki "B8:D" kısmını B8:D500 yaptım ama olmadı. Sanırım o kadar basit değil :)
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,
Kodda hiçbir değişiklik yapmanıza gerek yok.
Sayfa ve sayfalara satır ekledikçe kod onları algılayacak şekilde düzenlendi.
 

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Merhaba,
Kodda hiçbir değişiklik yapmanıza gerek yok.
Sayfa ve sayfalara satır ekledikçe kod onları algılayacak şekilde düzenlendi.
Üstad çalışma sayfasında Ocak-Aralık arasındaki aylardan başka çok farklı sayfalar var. Kodu çalıştırdığımda o sayfalardan da veri çekiyor. O yüzden sayfa aralığı belirtmemiz gerekiyor.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
@dEdE,

Cevap vermek için af dilemeye ya da izne ihtiyacınız yok. Alternatifler her zaman iyidir. ;)

Ben sadece üyelerimizin kendilerini geliştirmeleri için genellikle arama sonuçlarını öneriyorum. Yoksa tekrar tekrar aynı cevapları vermiş oluyoruz.

Bende Dictionary ile hazırladığım örnek dosyayı arşivde bulunması açısından paylaşıyorum.
 

Ekli dosyalar

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Bu dosyada ise istenen sayfalardan (kod içinde belirterek) benzersiz liste oluşturulmaktadır.
Üstad A sütununa sıra numarası eklemek istediğimde verileri A sütunundan almaya başlıyor ve bu defa da D sütununu almıyor. Kontrol edebillr misiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,243
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kodlar örnek dosyanıza göre hazırlandı...
 

dEdE

Destek Ekibi
Destek Ekibi
Katılım
1 Temmuz 2005
Mesajlar
2,605
Excel Vers. ve Dili
Ofis 2013 TR 64 Bit
Merhaba,

Soru/sorun aynı. Sorularımızı eksik soruyor, örnek dosyamızı sorumuza/sorunumuza uygun hazırlamıyoruz.
#1 numaralı mesajınıza ekli örnek dosyanız sadece Ocak-Mayıs aylarını içeriyor ve kişilerden(sadece ad) oluşuyor.
#3 numaralı mesajınıza ekli örnek dosyanız yine Ocak-Mayıs aylarını içeriyor, kimlik numarası, adı, soyadı var ve benzersiz kayıtlar kimlik numarasına göre belirlenecekmiş.
#5 numaralı mesajınızda “...Sanırım eklemeyi unuttuğum bir şey oldu. Eklediğim örnekte 4 ay var ama asıl listem Ocak ile Aralık ayları arasında 12 ay var...” diyorsunuz. Bu durumu varsayıp, Ocak-Aralık olmalı diye tahminde bulunup tüm ayları kapsayacak şekilde kod yazıyoruz.
#7 numaralı mesajınızdan anlıyoruz ki; “...Ocak-Aralık arasındaki aylardan başka çok farklı sayfalar var...” mış. Bunu tahmin edemedik. :)
#10 numaralı mesajınızdan ise “...A sütununa sıra numarası eklemek ...” istediğinizi anlıyoruz.
Bütün bunları ilk mesajınızda ve ilk örnek dosyanızda belirtmeliydiniz.

Neyse, aşağıdaki kod umarım isteğinizi karşılar.
C++:
Sub Benzersiz()
    Application.ScreenUpdating = False
    Set s1 = Sheets("TOPLAM")
    s1.Range("A8:D" & Rows.Count).ClearContents
    myArr = Array("OCAK", "ŞUBAT", "MART", "NİSAN", "MAYIS", "HAZİRAN", "TEMMUZ", "AĞUSTOS", "EYLÜL", "EKİM", "KASIM", "ARALIK")
For k = 0 To 11
    For i = 1 To Sheets.Count
         If Sheets(i).Name = myArr(k) Then
            ss = Sheets(i).Cells(Rows.Count, 4).End(3).Row
            ss1 = s1.Cells(Rows.Count, 2).End(3).Row + 1
            Sheets(i).Range("B8:D" & ss).Copy s1.Range("B" & ss1)
        End If
    Next i
Next k
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).RemoveDuplicates 1, xlNo
    s1.Range("A8") = 1
    s1.Range("A8:A" & Cells(Rows.Count, 2).End(3).Row).DataSeries
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).Sort Key1:=[B1], Order1:=1
    Application.ScreenUpdating = True
End Sub
 

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Merhaba,

Soru/sorun aynı. Sorularımızı eksik soruyor, örnek dosyamızı sorumuza/sorunumuza uygun hazırlamıyoruz.
#1 numaralı mesajınıza ekli örnek dosyanız sadece Ocak-Mayıs aylarını içeriyor ve kişilerden(sadece ad) oluşuyor.
#3 numaralı mesajınıza ekli örnek dosyanız yine Ocak-Mayıs aylarını içeriyor, kimlik numarası, adı, soyadı var ve benzersiz kayıtlar kimlik numarasına göre belirlenecekmiş.
#5 numaralı mesajınızda “...Sanırım eklemeyi unuttuğum bir şey oldu. Eklediğim örnekte 4 ay var ama asıl listem Ocak ile Aralık ayları arasında 12 ay var...” diyorsunuz. Bu durumu varsayıp, Ocak-Aralık olmalı diye tahminde bulunup tüm ayları kapsayacak şekilde kod yazıyoruz.
#7 numaralı mesajınızdan anlıyoruz ki; “...Ocak-Aralık arasındaki aylardan başka çok farklı sayfalar var...” mış. Bunu tahmin edemedik. :)
#10 numaralı mesajınızdan ise “...A sütununa sıra numarası eklemek ...” istediğinizi anlıyoruz.
Bütün bunları ilk mesajınızda ve ilk örnek dosyanızda belirtmeliydiniz.

Neyse, aşağıdaki kod umarım isteğinizi karşılar.
C++:
Sub Benzersiz()
    Application.ScreenUpdating = False
    Set s1 = Sheets("TOPLAM")
    s1.Range("A8:D" & Rows.Count).ClearContents
    myArr = Array("OCAK", "ŞUBAT", "MART", "NİSAN", "MAYIS", "HAZİRAN", "TEMMUZ", "AĞUSTOS", "EYLÜL", "EKİM", "KASIM", "ARALIK")
For k = 0 To 11
    For i = 1 To Sheets.Count
         If Sheets(i).Name = myArr(k) Then
            ss = Sheets(i).Cells(Rows.Count, 4).End(3).Row
            ss1 = s1.Cells(Rows.Count, 2).End(3).Row + 1
            Sheets(i).Range("B8:D" & ss).Copy s1.Range("B" & ss1)
        End If
    Next i
Next k
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).RemoveDuplicates 1, xlNo
    s1.Range("A8") = 1
    s1.Range("A8:A" & Cells(Rows.Count, 2).End(3).Row).DataSeries
    s1.Range("B8:D" & Cells(Rows.Count, 4).End(3).Row).Sort Key1:=[B1], Order1:=1
    Application.ScreenUpdating = True
End Sub
Elinize sağlık hocam mükemmel olmuş. Çok teşekkür ederim.
 
Üst