Dinamik liste birleştirme

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027
Merhaba arkadaşlar.
Elimde büyük verilerilere sahip 2 sayfam var. Sorunu basite indirgeyerek anlatacağım.

Ankara ve İstanbul isimlerine sahip 2 satış listesi sayfam var. A2 Hücrem de sadece tarih sabit olmakla birlikte b2,c2,...k2 ye kadar çeşitli bilgiler mevcut. Aynı başlıklara ait farklı bilgilerde diğer sayfamda mevcut.

Soru: Bu bilgilere dayanarak 3. sayfam da aynı başlıklar ile bunları birleştirmek istiyorum. İki kriter var. Biri her iki sayfadan birine yada ikisine veri girildiğinde tarih sırası ile alt alta bu sayfaya bu verilerin girmesi. İkinci kriter ise tarih sırasını gözetmesi. Kısacası iki listeyi bir liste yapmaya çalışıyorum ama sabit listeler değil.

Yardımlarınızı bekliyorum. Teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Örnek dosya paylaşmanızı öneririm.
 

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027
Baştan örnek dosya paylaşamayacagım için basite indirgeyerek anlattım. Yoksa konu 8 çalışma kitabı, 10650 çalışma sayfası, 90 userform ve 7 modül ile çalışmakta. A sayfasında bir liste var hergün buraya bilgi giriliyor aynı şekilde b sayfasınada giriliyor. c sayfasında yenı birlistede bu verileri hepsini görmek istiyorum kriterler ilk mesajımda yazmıştım.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu tür çözümler dosya yapısına göre hazırlanır. Herhangi bir satır ya da sütun farklılığı olduğunda hazırlanan makro düzgün çalışmaz. Bu nedenle örnek dosya paylaşmanız önemlidir.

Siz Ankara ve İstanbul sayfasındaki mevcut verileri örneğin İcmal sayfasına mı aktarmak istiyorsunuz?

Eğer öyleyse her üç sayfanızda da aynı sütunlarda aynı başlıklar/veriler mi mevcut?

Eğer öyle değilse yani İstanbul sayfasındaki örneğin adet sütunu C, İstanbul sayfasında E icmal sayfasında başka bir sütunda mı?

İlk mesajınızda "ikisine veri girildiğinde" demişsiniz, bununla nasıl bir işlem yapılmasını istiyorsunuz? Belirli hücrelere veri girildikten sonra otomatik olarak diğer sayfaya mı aktarılacak yoksa bir düğmeye vs basıp da mı aktarılacak?

Bu sayfalardaki veriler sürekli güncellenecek mi? Yani o sayfalardaki her veri her zaman mı aktarılacak yoksa bir defa aktarıldıktan sonra aynı kayıt bir daha aktarılmayacak mı?

Öyleyse aktarılan veri ne olacak? Silinecek mi?

Böyle bir çok soru ya da sorun ortaya çıkacağı için ben örnek dosya paylaşmanız istedim. İlk mesajınız yeterince açıklayıcı olsaydı örnek dosya istemezdim merak etmeyin.
 

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027

Üzgünün aklımca cabuk anlaşılır olsun diye çabalamam boşuna oldu:)

Yukarıda link paylaştım dosyanın küçük örneği burada.
Öncelikle msajda iletmiş oldugunuz sorulara açıklama getirmek istiyorum
Ankara sayfasına el ile satır bazında veriler giriliyor. Aynı şekilde İstanbul sayfasınada farklı veriler giriliyor. Başlıklar aynı ama bilgiler farklı demem o yüzden.

3sayfaya bu iki sayfaya girilen verilerin hepsi cıkması lazım. Burada onemli olan hücreler değil satırlar.
bir buton yada aktive etmek için farkı bir şey yok.
İl sayfalarına bilgi girildiğinde tarihi baz alarak sayfa3 yazması gerekli.

Aktarılan veri silinmeyecek. Döngü her veri girildiğinde bu kriterlere göre sayfa 3 de yazması.
Teşekkürler.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Anladığım kadarıyla aşağıdaki makroyu Ankara ya da Istanbul sayfalarındayken çalıştırırsanız o sayfadaki son satırı Sayfa3'e aktarır ve Sayfa3'ü tarih sırasına göre sıralar:

PHP:
Sub aktar()
Set s1 = Sheets("Ankara")
Set s2 = Sheets("Istanbul")
Set s3 = Sheets("Sayfa3")
If ActiveSheet.Name = s1.Name Or ActiveSheet.Name = s2.Name Then
    son = Cells(Rows.Count, "A").End(3).Row
    yeni = s3.Cells(Rows.Count, "A").End(3).Row + 1
    Range("A" & son & ":C" & son).Copy s3.Cells(yeni, "A")
    Cells(son, "D").Copy s3.Cells(yeni, "D")
    s3.Sort.SortFields.Clear
    s3.Sort.SortFields.Add Key:=Range("A6:A" & yeni) _
        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortTextAsNumbers
    With s3.Sort
        .SetRange Range("A2:D" & yeni)
        .Header = xlNo
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With
End If
End Sub
 

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027
İlginiz ve emeğiniz için teşekkür ederim. Ama bu macro yu sayfaya girdi olunca çalıştırmamız gerekmekte. Macroyu calıştırmazsak sayfa 3 e bilgi aktarmıyor.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Öyleyse excel aktarımın ne zaman yapılacağını neye göre belirleyecek? Zamansız, eksik ya da fazla aktarımı önlemek için sayfada bir değişiklik olmalı ki o değişiklik olduğunda aktarım yapılsın. Bunu nasıl belirleyebiliriz? (Örneğin bir hücreye "Tamam" yazılması gibi)
 

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027
En son boş olan satırı belirleyip onu referans alsak ve o satır dolu ise aktarsa. Bu sefer gereksiz ve tekrar eden bir döngüye mi girer?
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,372
Excel Vers. ve Dili
Ofis 365 Türkçe
Veri girdikten sonra ilgili satırda çift tıklama ile aktarma yapılabilinir. Aktarma yapıldıktan sonra da o satıra bir çentik eklenir ki tekrar aktarım olmasın.
Düşününce farklı yöntemler bulunabilinir.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Aşağıdaki kodları kod bölümünde ThisWorkbook/BuÇalışmaKitabı kısmına yapıştırın. Ankara ya da İstanbul sayfasında A:E aralığında değişiklik yaptığınızda (tüm hücreler dolu olmak ve F sütunu boş olmak şartıyla) o satırı Sayfa3'e aktarır ve hangi satıra aktardığını F sütununa kaydeder:

PHP:
Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
Set s1 = Sheets("Ankara")
Set s2 = Sheets("Istanbul")
Set s3 = Sheets("Sayfa3")
If ActiveSheet.Name <> s1.Name And ActiveSheet.Name <> s2.Name Then Exit Sub
If Intersect(Target, [A:E]) Is Nothing Then Exit Sub
yeni = s3.Cells(Rows.Count, "A").End(3).Row + 1
a = Target.Row
If Cells(a, "F") <> "" Then Exit Sub
If WorksheetFunction.CountBlank(Range("A" & a & ":E" & a)) = 0 Then
    Application.EnableEvents = False
        Range("A" & a & ":C" & a).Copy s3.Cells(yeni, "A")
        Cells(a, "D").Copy s3.Cells(yeni, "D")
        s3.Sort.SortFields.Clear
        s3.Sort.SortFields.Add Key:=Range("A6:A" & yeni) _
            , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
            xlSortTextAsNumbers
        With s3.Sort
            .SetRange Range("A2:D" & yeni)
            .Header = xlNo
            .MatchCase = False
            .Orientation = xlTopToBottom
            .SortMethod = xlPinYin
            .Apply
        End With
        Cells(a, "F") = yeni
    Application.EnableEvents = True
End If
End Sub
 
Son düzenleme:

tahkurth

Altın Üye
Katılım
26 Ağustos 2019
Mesajlar
27
Excel Vers. ve Dili
2010 Türkçe
Altın Üyelik Bitiş Tarihi
05-10-2027
Çok teşekkür ederim. Tam istediğim gibi. Emeğinize yüreğinize sağlık.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu arada örnek dosyanın ne kadar önemli olduğunu anlamışsınızdır umarım. Örneğin 3. mesajda "verilerin hepsini üçüncü sayfada görmek istediğinizi" belirtmiştiniz ama örnek dosyanızda veri giriş sayfalarında 5 sütun varken üçüncü sayfada 4 sütun olduğunu görüyoruz. Bunu örnek dosya olmadan bilemezdik mesela. ;)

Şunu tüm kullanıcılar bilmeli, makrolar her duruma uyan standart çözümler değildir. Dün bir başka kullanıcı yazmıştı "makrolar hazır giyim gibi değil, terzi usulüdür" yani her duruma göre ve o duruma özgü çözümler üretilir. Uygulama yaparken de ortaya çıkan farklı durumlar için düzeltme çözümleri uygulanır. Ben de şuna benzetiyorum, doktora bir şikayet için gideriz ve o bize ilaç verir ama o ilacın yan etkisini gidermek için başka ilaç da verir ya da dozajı değiştirir vs.
 
Üst