Farklı Sayfalardaki verileri Alt Alta Listemek

Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Merhaba arkadaşlar 3 farklı sayfada veriler var. ben bunlardan alt alta listelemek istiyorum.

1-mükker veriler tek bir kez listelenecek
2- listelenecek verilerin satır ve sütün sayıları sürekli değişiyor. Örneğin birinci sayfadaki veriler bazın A1:A10 olurken bazın A2:A30 olabiliyor.ay durum diğer sayfalar içinde geçerli.
3-Birleşme sonrası arada satır ve sütün kalmamalı
4-excelin "birleştir" komutuyla denedim. ama beceremedim. eğer bu komutla olması mümkünse buradan yapmak isterim.

yardımlerınız için şimdiden teşekkürler.....
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya paylaşınız.
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
mesajı silemiyorum arkadaşlar yanlış oldu. sory
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben düzensiz mesajınızı sildim. Lütfen dosya paylaşınız.
 

Korhan Ayhan

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

C++:
Option Explicit

Sub Sayfalari_Tek_Sayfada_Birlestir()
    Dim Sayfa As Worksheet, Veri As Variant, X As Long
    Dim Son As Long, Say As Long, Zaman As Double, t
    
    Zaman = Timer
    
    ReDim Liste(1 To Rows.Count, 1 To 1)
    
    Liste(1, 1) = "LİSTE"
    Say = 1
    
    With CreateObject("Scripting.Dictionary")
        For Each Sayfa In ThisWorkbook.Worksheets
            If Sayfa.Name <> "LİSTE" Then
                Son = Sayfa.Cells(Sayfa.Rows.Count, 1).End(3).Row
                Veri = Sayfa.Range("A1:A" & Son).Value
                For X = LBound(Veri) To UBound(Veri)
                    If Veri(X, 1) <> "" Then
                        If Not .Exists(Veri(X, 1)) Then
                            .Item(Veri(X, 1)) = 1
                            Say = Say + 1
                            Liste(Say, 1) = Veri(X, 1)
                        End If
                    End If
                Next
            End If
        Next
        
        Sheets("LİSTE").Columns(1).Clear
        Sheets("LİSTE").Range("A1").Resize(.Count) = Liste
        Sheets("LİSTE").Columns.AutoFit
    End With
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Öncelike ilgin için teşekkürler;

kodla ilgili bir kaç sorum var.
1- bo kod sayfa sayısı artarsa yinede çalılşır mı? örneğin şuan 3 farklı safdan veriler listelenecek. bu sayı 5 olursa çalışmaya devam eder mi?
2- bemim asıl çalışma sayfsında sayfa isimleri farklı. bunları kod kısmında nasıl değiştirebilirm..

sayfa isimleri şöyle

KPAPG-İKİ TARİH ARASI
AYLIK MER. TAHSİLAT LİSTESİ
AYLIK KAYITSIZ LİSTESİ

VERİLERİN LİSTELECEĞİ SAYFA ADI: KONTROL
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Kod LİSTE isimli sayfa dışında sayfa isimleriyle ilgilenmez.

Sayfa sayısı sınırı yoktur.

Şu bölümdeki kırmızı bölümü KONTROL olarak değiştiriniz.

If Sayfa.Name <> "LİSTE" Then


Ek olarak aşağıdaki bölümdeki sayfa isimlerini de KONTROL olarak değiştiriniz.

Sheets("LİSTE").Columns(1).Clear
Sheets("LİSTE").Range("A1").Resize(.Count) = Liste
Sheets("LİSTE").Columns.AutoFit
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Makro dışında bir yol var mı hocam. Makroyu beceremedim. (ekte dosya)

birde benim asıl çalışma sayfamda 10 sayfa var. ama ben sadece belirlediğim sayfalardan alınan verilerin listelenmesini istiyorum. sanırım bu makro tüm sayfalardaki verileri listeleyecek...

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Müsaade ederseniz bir şey sormak istiyorum.

Son mesajınızdaki taleplerinizi neden ilk mesajınızda yazmadınız?
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
makdo dışında bir yol talebini diyorsanız ilk mesajda var. (ilk mesaj 4. soru )
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Makro dışında bir yolu kast etmiyorum.

birde benim asıl çalışma sayfamda 10 sayfa var. ama ben sadece belirlediğim sayfalardan alınan verilerin listelenmesini istiyorum. sanırım bu makro tüm sayfalardaki verileri listeleyecek...
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Açıkçası hocam o detayı vermek aklıma gelmemişti.Daha doğrusu gerekli bir detay olduğunu düşünmemiştim...
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önemsiz olduğunu düşünüyorsunuz ama #7 nolu mesajı yazma ihtiyacı duyuyorsunuz.

Bu mesajlarımı neden yazıyorum;

Bu konuyu inceleyen diğer üyelerimize örnek teşkil edeceğini düşünüyorum. (Umarım öyle olur...)

Defalarca kez ifade ediyoruz. Sorularınızı net sorunuz diye. Ama üyelerimiz kendi dosyalarına sanki bizler hakimmişiz gibi davranarak sorularını foruma soruyorlar. Örnek dosya talep ettiğimizde ise soru çok basit gerek var mı gibisinden tavırlarla karşılaşıyoruz. Gerek var ki talep ediyoruz.

Bazı üyelerimizde öğrenmek adına satır ve sütunları farklı yaparak örnek dosya ekliyorlar. Sonra paylaşılan cevapları kendilerine uyarlamaya çalışıyorlar. Çoğu zaman sonu hüsran oluyor. Bunun sebebi de temelin zayıf olmasıdır.

Umarım açıklayıcı olmuştur.
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Hocam 7 nolu mesajı sizin kodları incelediğimde fark ettim. Hazırladığınız kodlarda sayfa isimleri geçmeyince bu detayın da önemli olduğunu anladım.


Asıl excel çalışma dosyayı paylaşamıyoruz. çünkü kişisel veriler içerebiliyor. Şimdi şöyle bir yol izledim. Asıl çalışma Excel sayfasındaki bilgileri değiştirerek ekte paylaşıyorum.

Tekrar yapmak istediğimi anlatacak olursam:

“KPAPG-İKİ TARİH ARASI” sayfasındaki veriler (A4 başlayacak ama bitişi her zaman farklı olur bazen A20 hücresine kadar bazen A15 hücresine kadar olabilir)

“AYLIK MER. TAHSİLAT LİSTESİ” sayfasındaki veriler (A2 başlayacak ama bitişi her zaman farklı olur)

“kayıtsız” sayfasındaki veriler (A2 başlayacak ama bitişi her zaman farklı olur)



“KONTROL” sayfasında A2 hücresinden başlayarak listelenecek. (3 sayfadaki veriler:“KPAPG-İKİ TARİH ARASI” ,“AYLIK MER. TAHSİLAT LİSTESİ”, “kayıtsız”)

Ancak 3 sayfanın verileri sırayla listelenirken varsa mükerrer olan (yani her 2 sayfada yada 3 sayfada birden olan) kayıtlar tek bir kez listelenecek.

Eğer makro değil de formülle yapmak mümkünse daha güzel olur. Makro da olabilir tabi.

 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Tekrar hatırlatmakta fayda görüyorum.

Hiçbir üyemizin özel-kişisel bilgileriyle dosyalarıyla bir işimiz yoktur. Böyle bir talebimizde yoktur.

Sadece asıl dosyanıza en azından yapısal olarak (satır-sütun bazında) benzerlik olması yeterlidir. Diğer önemli bilgileri mesaj içeriğinde belirtmeniz cevap verecek kişileri yönlendirecektir.

Aşağıdaki kodu deneyiniz.

C++:
Option Explicit

Sub Sayfalari_Tek_Sayfada_Birlestir()
    Dim Sayfa As Worksheet, Veri As Variant, X As Long
    Dim Son As Long, Say As Long, Satir As Byte, Zaman As Double
    
    Zaman = Timer
    
    ReDim Liste(1 To Rows.Count, 1 To 1)
    
    With CreateObject("Scripting.Dictionary")
        For Each Sayfa In Sheets(Array("KPAPG-İKİ TARİH ARASI", "AYLIK MER. TAHSİLAT LİSTESİ", "kayıtsız"))
            If Sayfa.Name = "KPAPG-İKİ TARİH ARASI" Then
                Satir = 4
            Else
                Satir = 2
            End If
            Son = Sayfa.Cells(Sayfa.Rows.Count, 1).End(3).Row
            Veri = Sayfa.Range("A" & Satir & ":A" & Son).Value
            For X = LBound(Veri) To UBound(Veri)
                If Veri(X, 1) <> "" Then
                    If Veri(X, 1) <> "TOPLAM" Then
                        If Not .Exists(Veri(X, 1)) Then
                            .Item(Veri(X, 1)) = 1
                            Say = Say + 1
                            Liste(Say, 1) = Veri(X, 1)
                        End If
                    End If
                End If
            Next
        Next
        
        Sheets(" KONTROL").Range("A2:A" & Rows.Count).ClearContents
        Sheets(" KONTROL").Range("A2").Resize(.Count) = Liste
        Sheets(" KONTROL").Columns.AutoFit
    End With
    
    MsgBox "İşleminiz tamamlanmıştır." & Chr(10) & Chr(10) & _
           "İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Hocam emeğin için çok teşekkür ediyorum. Kod çok güzel çalıştı. Ancak kod açlıştığında sayfanın satır ve sütün boyutlarını bozuyor. ve gizli sayfaları gösteriyor. Nedeni ne olabilir?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,247
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Şu satırı silerseniz sütun boyutları değişmez.

Sheets(" KONTROL").Columns.AutoFit

Kod içinde gizli sayfalara ilgili bir işlem olmaması gerekir.
 
Katılım
30 Kasım 2011
Mesajlar
133
Excel Vers. ve Dili
2007 türkçe
Tamamdır hocam teşekkürler
 
Üst