• DİKKAT

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

Farklı Sayfalardaki verileri Alt Alta Listemek

  • Konbuyu başlatan Konbuyu başlatan sdn123
  • Başlangıç tarihi Başlangıç tarihi
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.....
 
Örnek dosya paylaşınız.
 
mesajı silemiyorum arkadaşlar yanlış oldu. sory
 
Ben düzensiz mesajınızı sildim. Lütfen dosya paylaşınız.
 
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
 
Ö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
 
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
 
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...

 
Müsaade ederseniz bir şey sormak istiyorum.

Son mesajınızdaki taleplerinizi neden ilk mesajınızda yazmadınız?
 
makdo dışında bir yol talebini diyorsanız ilk mesajda var. (ilk mesaj 4. soru )
 
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...
 
Açıkçası hocam o detayı vermek aklıma gelmemişti.Daha doğrusu gerekli bir detay olduğunu düşünmemiştim...
 
Ö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.
 
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.

 
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
 
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?
 
Ş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.
 
Tamamdır hocam teşekkürler
 
Geri
Üst