• DİKKAT

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

Konsolidasyon-Birleştirme

Katılım
1 Ekim 2004
Mesajlar
206
Merhaba,

Herhangi bir excel dosyasında yüzlerce sayfam ve bu sayfalarda aynı formatta tablolarım var.

Bu sayfalardan ihtiyaca göre konsolidasyon oluşturmak istiyorum.Burada farklı kombinasyonlar olabilir.Excel programının yerleşik özelliklerinden birleştiri kullanarak aslında istediğimi bir nebze gerçekleştiriyorum.

Ancak bu özellik yardımı ile oluşturduğum tabloda istemediğim durumlar var.
Birincisi eğer tablolarda veri olmayan kısımlar var ise bunların konsolidasyonu ile ilgili olarak kaynak veriye bağlantı oluşturmuyor.(Ekli dosyada sarı ile işaretli) Ben konsolidasyonu bir defa oluşturup devamlı kullanmak istediğim için tek seferde tablonun tüm hücreleri için kaynak veriye bağlantı oluşturarak bir konsolidasyon tablosu (formüllü) oluşmasını istiyorum.(Yani bu hücrelere daha sonra değer de girilebileceğini düşünerek boş hücreler için de kaynak veriye bağlantı oluşturması gerekli)

İkincisi kaynak veriye bağlantı oluştururken alt toplamlar şeklinde oluşturuyor.Yani kaç tane tabloyu konsolide ettiğine bağlı olarak o kadar satır ekleyip (Ekli dosyada yeşil renk ile işaretli)toplam alıyor.Ben ise sadece tek satırda bu işlemi yani kaynak veriye bağlantı formülünü yazmasını istiyorum.

Ayrıca özet tablo ile ilgili çözüm olduğunu biliyorum.Ancak ben formüllü bir excel sayfası oluşturmak istiyorum.

İstediğim tabloyu ayrıca ekledim.

Konu ile ilgili yardımlarınızı bekliyorum.

Saygılarımla,

Not:Aslında bu istediğimi formüller yardımı ile yapıyorum.Bir kontrol sayfasından hangi sayfalardaki tabloların hangi hücrelerinin konsolide edileceğini seçerek bir konsolidasyon oluşturma yöntemim var ,ancak dosya çok büyüyor ve yavaşlıyor.
 

Ekli dosyalar

Evet makrolar ile bir çözüm bulunabilir mi diye bu bölüm altına açtım.(Birleştir ile ilgili geliştirme için)

İlgili linkleri inceliyorum.

Saygılar,
 
.

Ayrıca Özet Tabloyu da dinamik kullanırsanız; o da çözüm olur.

.
 
Evet özet tablo ile ilgili çözümü uyguladım.Ancak format açısından özet tablo ile yapmak istemiyorum.

Ayrıca vermiş olduğunuz birinci linkteki ikinci dosyanın birinci tablo örneğini daha önce incelemiş ve çalışmama uygulamıştım.Ancak söylediğim gibi yüzlerce tablo var ve tablolarda binlerce satır var.Aynı zamanda birden fazla konsolidasyon yapmam gerekiyor aynı sayfada

Böyle olunca dosya çok büyüyor ve yavaşlıyor.Yoksa vermiş olduğunuz örnek işimi çözüyor.

Ben şu şekilde bir geliştirme olabilir mi diye düşündüm.(Makrolar yardımı ile )

Birleştir Consolidate özelliğindeki gibi bir form açılsın bu form üzerinde hangi sayfalarda hangi hücre aralıklarını konsolide edeceğimi seçebileyim ve kaynak veriye bağlantı oluşturabileyim.Ancak birleştir özelliğini kullanarak yaptığım tabloda boş hücreler ile ilgili durumda kaynak veriye oluşturmadığı bağlantıları oluştursun.Yine her tablo için ayrı bir satır eklemesin, tek satırda bu işlemi yapsın)

Saygılarımla,
 
Merhaba,

Bir deneme yaptım. Tabloların aynı satır ve sütundan oluştuğunu, Birleştirilecek sayfa adlarının Tablo1, Tablo2 şeklinde gittiğini varsaydım.

Kod:
Sub Tablolari_Birlestir()
 
    Dim Sonuc   As Worksheet, _
        Syf     As Worksheet
    
    Dim Hucre   As Range
    
    Dim Drm     As Boolean
    
    
    Set Sonuc = Sheets("Benim İstediğim")
    
    Application.ScreenUpdating = False
    
    Sonuc.Range("B4").CurrentRegion.ClearContents
    
    For Each Syf In Worksheets
    
        If Syf.Name Like "Tablo*" Then
        
            If Drm = False Then
                Syf.Range("B4").CurrentRegion.Copy Sonuc.Range("B4")
                Sonuc.Range("B4") = ""
                Drm = True
            Else
                For Each Hucre In Syf.Range("B4").CurrentRegion.Offset(1, 1)
                    If Not Hucre = "" Then _
                        Sonuc.Cells(Hucre.Row, Hucre.Column) = _
                        Sonuc.Cells(Hucre.Row, Hucre.Column) + Hucre
                Next Hucre
                
            End If
        End If
    Next Syf
    
    Application.ScreenUpdating = True
    
    MsgBox "Birleştirme İşlemi Tamamlanmıştır....", vbInformation, "N. YEŞERTENER --> [URL="http://www.excel.web.tr/"]www.excel.web.tr[/URL]"
    
End Sub
 

Ekli dosyalar

Merhaba,

İstediğimi anlatamadım muhtemelen.

Ben hücrelere değer değil formül yazılmasını istemiştim.

Örneğin C5 hücresine =Tablo1!C5+Tablo2!C5 (Kaynak veriye bağlantı oluşturma derken bunu kasdetmiştim.)

Saygılarımla,
 
Sayın Necdet Yeşertener;

Günaydın ve hayırlı Cuma'lar.

Emek ve katkınız için teşekkürler.

Ankara'ya İstanbul'dan sevgi ve saygılar.
 
Merhaba,

İstediğimi anlatamadım muhtemelen.

Ben hücrelere değer değil formül yazılmasını istemiştim.

Örneğin C5 hücresine =Tablo1!C5+Tablo2!C5 (Kaynak veriye bağlantı oluşturma derken bunu kasdetmiştim.)

Saygılarımla,

Merhaba,

Aşağıdaki kodları deneyip sonucu bildiriniz.

Yeni mesaj yazmamın nedeni 2 ayrı çözüm olması için.

Kod:
Sub Tablolari_Birlestir()
    
    Dim Formul  As String
    
    Dim Sonuc   As Worksheet, _
        Syf     As Worksheet
    
    Dim Hucre   As Range
    
    Dim Drm     As Boolean
    
    
    Set Sonuc = Sheets("Benim İstediğim")
    
    Application.ScreenUpdating = False
    
    Sonuc.Range("B4").CurrentRegion.ClearContents
    
    For Each Syf In Worksheets
    
        If Syf.Name Like "Tablo*" Then
        
            If Drm = False Then
                Syf.Range("B4").CurrentRegion.Copy Sonuc.Range("B4")
                Sonuc.Range("B4") = ""
                Drm = True
                For Each Hucre In Syf.Range("B4").CurrentRegion.Offset(1, 1)
                    If Not Hucre = "" Then _
                        Sonuc.Cells(Hucre.Row, Hucre.Column) = "=" & Syf.Name & "!" & Replace(Hucre.Address, "$", "")
                Next Hucre
               
            Else
                For Each Hucre In Syf.Range("B4").CurrentRegion.Offset(1, 1)
                    If Not Hucre = "" Then
                        Formul = Sonuc.Cells(Hucre.Row, Hucre.Column).Formula
                        If Formul = "" Then
                            Sonuc.Cells(Hucre.Row, Hucre.Column) = "=" & Syf.Name & "!" & Replace(Hucre.Address, "$", "")
                        Else
                            Formul = Formul & "+" & Syf.Name & "!" & Replace(Hucre.Address, "$", "")
                            Sonuc.Cells(Hucre.Row, Hucre.Column) = Formul
                        End If
                    End If
                Next Hucre
                
            End If
        End If
    Next Syf
    
    Application.ScreenUpdating = True
    
    MsgBox "Birleştirme İşlemi Tamamlanmıştır....", vbInformation, "N. YEŞERTENER --> [URL="http://www.excel.web.tr"]www.excel.web.tr[/URL]"
    
End Sub
 

Ekli dosyalar

Merhaba,

9 nolu mesajdaki kodlar yenilenmiştir. Formüllerde kullanılan $ işareti kaldırılmıştır.
 
Tekrar Merhaba,

Emeğiniz için çok teşekkürler.

1-Örneğin D5 hücresinde her iki tabloda da veri olmadığı için herhangi bir formül yazmıyor.

Ben her iki tabloda bu hücrede veri olmasa bile "=Tablo1!D5+Tablo2!D5" formülünü yazmasını istiyorum.

2-Örneğin E10 hücresinde sadece tablo 2 de formül olduğu için "=Tablo2!E10" formülünü yazmış, ben ise "=Tablo1!E10+Tablo2!E10" formülünü yazmasını istiyorum. (Tablo 1 de E10 hücresinde veri olmasa bile)

3-Birde tablo adları Tablo1 ,Tablo 2 şeklinde düzenli değil, karışık adlar ,ben örnekte bu şekilde yazdım ama gerçekte karışık adlar var)

Saygılarımla,
 
9 nolu mesajdaki kodların yenilenmesi benim son yazdığım talebe göre ise hala istediğimi yapabilmiş değilim.

Saygılarımla,
 
Merhaba,

İnceleyiniz.

Kod:
Sub Tablolari_Birlestir()
    
    Dim Formul  As String
    
    Dim Sonuc   As Worksheet, _
        Syf     As Worksheet
    
    Dim Sat     As Long, _
        i       As Long
    
    
    Dim Sut     As Integer, _
        j       As Integer
    
    Dim Drm     As Boolean
    
    Set Sonuc = Sheets("Benim İstediğim")
    
    Application.ScreenUpdating = False
    
    Sonuc.Range("B4").CurrentRegion.ClearContents
    
    For Each Syf In Worksheets
    
        If Syf.Name Like "Tablo*" Then
        
            If Drm = False Then
                Syf.Range("B4").CurrentRegion.Copy Sonuc.Range("B4")
                Sonuc.Range("B4") = ""
                Drm = True
            End If
            Sat = Syf.Range("B4").CurrentRegion.Rows.Count + 3
            Sut = Syf.Range("B4").CurrentRegion.Columns.Count + 1
            
            For i = 5 To Sat
                For j = 3 To Sut
                    If Sonuc.Cells(i, j).HasFormula Then
                        Formul = Sonuc.Cells(i, j).Formula
                        Formul = Formul & "+" & Syf.Name & "!" & Replace(Cells(i, j).Address, "$", "")
                        Sonuc.Cells(i, j) = Formul
                    Else
                        Sonuc.Cells(i, j) = "=" & Syf.Name & "!" & Replace(Cells(i, j).Address, "$", "")
                    End If
                    Formul = Sonuc.Cells(i, j).Formula
                Next j
            Next i
                
        End If
        
    Next Syf
    
    Application.ScreenUpdating = True
    
    MsgBox "Birleştirme İşlemi Tamamlanmıştır....", vbInformation, "N. YEŞERTENER --> [URL="http://www.excel.web.tr"]www.excel.web.tr[/URL]"
    
End Sub
End Sub
 

Ekli dosyalar

Merhaba,

Süper olmuş elinize sağlık, sadece tablo adları tablo1 ,tablo2 diye devam etmiyor.Karışık örneğin Adana, Kastamonu, İstanbul, İzmir ,Kayseri gibi sayfa adları var.Ben bunlardan sadece seçtiklerimin konsolide olmasını istiyorum.

Saygılarımla,
 
Merhaba,

Bu isteğinizi de karşılayacağım.

14. mesajdaki kodlarda

Kod:
        If Syf.Name Like "Tablo*" Then
Satırını

Kod:
        If Not Syf.Name = "Benim İstediğim" Then

ile değiştirin. Diğer gereksiz sayfaları silin.
 
Merhaba,

Burada bir seçim opsiyonu getiremez miyiz ? Yani tüm sayfaların içinden sadece seçtiklerimi konsolide et gibi.Yani örneğin G sütununa konsolide olacak sayfaların ismini yazsam, ve sadece bu sayfaları konsolide etse olmaz mı ?

Saygılarımla,
 
Geri
Üst