• DİKKAT

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

Birden çok sayfadan verileri tek sayfada toplama

Katılım
18 Ekim 2017
Mesajlar
5
Excel Vers. ve Dili
EXCEL 2013 TÜRKÇE
Üstatlar size benim için ciddi önem taşıyan bir soru soracağım çözümü varsa ne mutlu bana.

Şimdi benim elimde bir vardiya exceli var kendi hazırladığım. Bu vardiya excelinde vardiya içinde oluşan giderler ve gün içinde verilen veresiye yakıtlar var. Hergün farklı bir excel sayfası olduğu için bu gider ve cari verilerini tek sayfada nasıl toplayacağımı bulamadım. Sizin için bir örnek dosya oluşturdum. Oradan bakıp bana yardımcı olabilirseniz mükemmel sevinirim.
 

Ekli dosyalar

Son düzenleme:
Dosyayı neden göremiyorsunuz? Formatından dolayı ise düzeltebilirim. Söylediğiniz eklentiyi kurdum lakin pek bir şey anlamadım.
Merhaba,
Altın Üyeliği bulunmayanlar Forum Sayfasına yüklenen dosyaları indiremezler.
Dosyanızdan anladığım kadarıyla; 1, 2, 3 gibi sayılar ayın günlerini yansıtıyor ayın son gününe kadar devam ediyor, bunlardaki giderler ve carilerin toplamlarını giderler ve cariler sayfasına taşımak istiyorsunuz. Doğru mu?
 
Son düzenleme:
Merhaba,
Altın Üyeliği bulunmayanlar Forum Sayfasına yüklenen dosyaları indiremezler.
Dosyanızdan anladığım kadarıyla; 1, 2, 3 gibi sayılar ayın günlerini yansıtıyor ayın son gününe kadar devam ediyor, bunlardaki giderler ve carilerin toplamlarını giderler ve cariler sayfasına taşımak istiyorsunuz. Doğru mu?

Evet kısmen doğru. Lakin toplam olarak değilde liste şeklinde tek bir sayfada olmasını istiyorum hepsinin. Ay sonunda rapor çıkartırken sayfalardan tek tek kopyala yapıştır yapmakla uğraşmamış olurum.
 
Giderler Sayfasına bir buton ekleyerek, aşağıdaki kodları ekleyiniz:
Kod:
Sub giderleri_guncelle()
Dim sh As Worksheet, ss As Long, alan As Range, syf As Worksheet, ilk As Range, son As Range
Set sh = Sheets("GİDERLER")
sat1 = 4
sh.Range("B4:D" & Rows.Count).ClearContents

For Each syf In ThisWorkbook.Sheets
On Error Resume Next

    If IsNumeric(syf.Name) Then
        Set ilk = syf.Range("K26")
        Set son = syf.Range("M45").End(3)
        If son.Row < ilk.Row Then GoTo devam
        Set alan = syf.Range(ilk, son)
        sat2 = sat1 + alan.Rows.Count - 1
        sh.Range("B" & sat1 & ":D" & sat2).Value = alan.Value
        sat1 = sat2 + 1
    End If
devam:
Next syf
MsgBox "İşlem tamamlandı.", vbInformation, "antonio"
End Sub

Cariler Sayfasına atayacağınız kodlarınızda aşağıdadır:
Kod:
Sub carileri_guncelle()
Dim sh As Worksheet, ss As Long, alan As Range, syf As Worksheet, ilk As Range, son As Range

Set sh = Sheets("CARİLER")
sat1 = 3
sh.Range("C3:E" & Rows.Count).ClearContents

For Each syf In ThisWorkbook.Sheets
On Error Resume Next

    If IsNumeric(syf.Name) Then
        Set ilk = syf.Range("K9")
        Set son = syf.Range("M22").End(3)
        If son.Row < ilk.Row Then GoTo devam
        Set alan = syf.Range(ilk, son)
        sat2 = sat1 + alan.Rows.Count - 1
        sh.Range("C" & sat1 & ":E" & sat2).Value = alan.Value
        sat1 = sat2 + 1
    End If
devam:
Next syf
MsgBox "İşlem tamamlandı.", vbInformation, "antonio"
End Sub
NOT. Kodlar, örnek dosyanıza göre düzenlenmiştir.
 
Giderler Sayfasına bir buton ekleyerek, aşağıdaki kodları ekleyiniz:
Kod:
Sub giderleri_guncelle()
Dim sh As Worksheet, ss As Long, alan As Range, syf As Worksheet, ilk As Range, son As Range
Set sh = Sheets("GİDERLER")
sat1 = 4
sh.Range("B4:D" & Rows.Count).ClearContents

For Each syf In ThisWorkbook.Sheets
On Error Resume Next

    If IsNumeric(syf.Name) Then
        Set ilk = syf.Range("K26")
        Set son = syf.Range("M45").End(3)
        If son.Row < ilk.Row Then GoTo devam
        Set alan = syf.Range(ilk, son)
        sat2 = sat1 + alan.Rows.Count - 1
        sh.Range("B" & sat1 & ":D" & sat2).Value = alan.Value
        sat1 = sat2 + 1
    End If
devam:
Next syf
MsgBox "İşlem tamamlandı.", vbInformation, "antonio"
End Sub

Cariler Sayfasına atayacağınız kodlarınızda aşağıdadır:
Kod:
Sub carileri_guncelle()
Dim sh As Worksheet, ss As Long, alan As Range, syf As Worksheet, ilk As Range, son As Range

Set sh = Sheets("CARİLER")
sat1 = 3
sh.Range("C3:E" & Rows.Count).ClearContents

For Each syf In ThisWorkbook.Sheets
On Error Resume Next

    If IsNumeric(syf.Name) Then
        Set ilk = syf.Range("K9")
        Set son = syf.Range("M22").End(3)
        If son.Row < ilk.Row Then GoTo devam
        Set alan = syf.Range(ilk, son)
        sat2 = sat1 + alan.Rows.Count - 1
        sh.Range("C" & sat1 & ":E" & sat2).Value = alan.Value
        sat1 = sat2 + 1
    End If
devam:
Next syf
MsgBox "İşlem tamamlandı.", vbInformation, "antonio"
End Sub
NOT. Kodlar, örnek dosyanıza göre düzenlenmiştir.

Üstat kod olarak değilde formül olarak verebilir misin bunu. macro bilgim pek yok.
 
Üstat kod olarak değilde formül olarak verebilir misin bunu. macro bilgim pek yok.
Sadece iki sayfa arasında veri sorgulama olsaydı, sorunsuz olarak formül de kullanılabilirdi.
Ancak ayın gün sayısı kadar sayfadan teker teker veri sorgulama yapmak durumundasınız, sayısal olmayan sayfa isimlerini pas geçeceksiniz, her seferinde sayfada kaç satır veri olduğunu hesaplayacaksınız, bunları alt alta sıralayacaksınız. Bunlar formül ile mümkün değildir.
Kod bilginiz yoksa size örnek dosyanızı gönderiyorum. Asıl dosyanızın formatı aynı ise sorunsuz olarak kullanabilirsiniz. Gün sayısı kadar yeni sayfa açıp bilgileri yazabilir, istediğiniz zaman sorgulama yapabilirsiniz. Tek dikkat etmeniz gereken; günleri gösteren sayfa isimlerinin sayısal olmasıdır.
Dosyanız ektedir.
 

Ekli dosyalar

Son düzenleme:
Benim çalışmama bir bak istersen. Belki aynı şeyi soruyor olabilirsiniz.

http://www.excel.web.tr/f50/ko-ullu-indis-t167498.html

Merhaba,
Dosyanızı inceledim.
Sıralama yapamazsınız, çünkü verileri formülle alıyorsunuz. Formülle verileri aldığnız yere de yine formülle başka yerden aktarılıyor.
Birden fazla varsa konusunda, mevcut formülün başına, "=EĞER(EĞERSAY(aralık;ölçüt)>=1;"";<MEVCUT FORMÜLÜNÜZ>" şeklinde bir kontrol deneyebilirsiniz. Ancak çok fazla iç içe Eğer oluşabilir. Sınama ile fikir oluşur.
Ayrıca aşırı derecede formül içeren sayfalar belli bir satır uzunluğundan sonra yavaş çalışır, bu yüzden daha sade ve makrolarla çalışan dosyalara yönelmenizi öneririm.
 
Geri
Üst