• DİKKAT

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

Sayfalara Veri Aktarımı

Katılım
4 Eylül 2020
Mesajlar
394
Excel Vers. ve Dili
Excel 2016
Merhabalar ekteki dosyamda günlük işledigim kasa defterim vardır. Tarih olan sayfalara veri işliyorum. Şube ismi olan ankara mesela oraya işlediğim veri direk aktarıyor. Ben hücrede yada sutun eklediğimde baştan değiştirmem gerekiyor bütun şube sayfalarını. Daha iyi şekilde nasıl yapabilirim formül yada makro ile çözümü varmıdır teşekkür ederim
 

Ekli dosyalar

Sütun ya da satır eklenebilen yapılarda fonksiyonla çözüme gitmek daha akıllıca olacaktır.

Ben satır ve sütun kesişimli tablolarda genellikle İNDİS+KAÇINCI fonksiyonlarını kullanarak sonuca gidiyorum. Burada ki tek sıkıntı yeni eklenen verinin tespitidir. Eğer ben üşenmem yeni eklediğim veriyi formül yazdığım sayfayada eklerim diyorsanız önerdiğim fonksiyonları deneyebilirsiniz. Yok ben bunlarla uğraşamam derseniz bu durumda dinamik çalışabilen ÖZET TABLO (PIVOT TABLE) kullanmanızı kesinlikle tavsiye ederim. Tabi bunu kullanabilmeniz için veri girişlerinizi VERİ TABANI formunda yapmanız gerekecektir.
 
Merhaba hocam indisli örnegini paylaşabilirmisiniz size zahmet
 
='01.01.2021'!D3 ='02.01.2021'!D3 ='03.01.2021'!D3 sayfalardan alıyorum bu şekilde yapıyorum bunu tek tek hücrelere yazıyorum
 
Sayfa isimleriniz tarih olduğu için formülü uzatmak zorunda kaldım.

Tarih olan sayfalarda tablo yapısını A:Z sütun aralığı olarak baz aldım. Sizin ihtiyacınız daha geniş bir aralıksa formülde değiştirirsiniz.

KIZILAY sayfası B2 hücresine uygulayıp sağa ve alta doğru sürükleyiniz.

C++:
=İNDİS(DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!A:Z");KAÇINCI(PARÇAAL(HÜCRE("DOSYAADI";$A$1);MBUL("]";HÜCRE("DOSYAADI";$A$1);1)+1;31);DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!A:A");0);KAÇINCI(B$1;DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!1:1");0))

Bu formülün size artısı ne olacak;

1- Bazı hücrelerde hata oluşacak. Hata veren hücreler ilgili tarihte yok demektir. Bunu tablonuza eklemeniz gerekmektedir.
2- Tarihlere ait sayfadaki toplamları sonuç sayfanızla karşılaştırdığınızda eğer arada fark varsa ve tabloda ki formüller hata vermiyorsa tarih olan sayfaya yeni bir kriter eklenmiş demektir. Bunu tespit ettikten sonra sonuç sayfasına bu kriteri ekleyip formülü bu alana kopyalamanız yeterli olacaktır.
 
Alternatif olsun.
Yine Kızılay B2 hücresi için yazılmıştır, sağa ve aşağı doğru öoğaltıp diğer sayfalarda da kullanabilirsiniz.

C++:
=DOLAYLI(ADRES(KAÇINCI($A$35;KAYDIR(DOLAYLI(ADRES(1;1;1;1;METNEÇEVİR($A2;"g.aa.yyyy")));0;0;28;1));SÜTUN();1;1;METNEÇEVİR($A2;"g.aa.yyyy")))
 
Merhaba üstadlar ikinizede teşekkür ederim. Bu forum sizler sayesinde vardır. Hayırlı günler dilerim
 
Merhaba üstadlarım formül dosyamda çok kasma yaşatıyor. Başka çözüm varmıdır acaba
 
Dinamik olsun deyince mecburen bazı zorluklara katlanmak durumundasınız.

Benim önerdiğim formülde hücre aralığını daraltarak biraz daha hız kazanabilirsiniz.

Tarih olan sayfalarda tablo aralığını A1:Z100 olacak şekilde tanımladım. Sanırım sizin için yeterli.olacaktır.

C++:
=İNDİS(DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!A1:Z100");KAÇINCI(PARÇAAL(HÜCRE("DOSYAADI";$A$1);MBUL("]";HÜCRE("DOSYAADI";$A$1);1)+1;31);DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!A1:A100");0);KAÇINCI(B$1;DOLAYLI("'"&METNEÇEVİR($A2;"gg.aa.yyyy")&"'!A1:Z1");0))
 
Merhaba hocam teşekkür ederim denicem bu şekilde . Makroya çevirebilirmiyiz peki
Kod:
Sub Aktar()
    With Sheets("Ankara").Range("B2:O30")
    
    .FormulaR1C1 = _
        "=INDEX(INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:AC""),MATCH(MID(CELL(""DOSYAADI"",R1C1),SEARCH(""]"",CELL(""DOSYAADI"",R1C1),1)+1,31),INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:A""),0),MATCH(R1C,INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!1:1""),0))"
        .Value = .Value
  
     With Sheets("Antalya").Range("B2:O30")
    
    .FormulaR1C1 = _
        "=INDEX(INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:AC""),MATCH(MID(CELL(""DOSYAADI"",R1C1),SEARCH(""]"",CELL(""DOSYAADI"",R1C1),1)+1,31),INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:A""),0),MATCH(R1C,INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!1:1""),0))"
        .Value = .Value
          With Sheets("Aydın").Range("B2:O30")
    
    .FormulaR1C1 = _
        "=INDEX(INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:AC""),MATCH(MID(CELL(""DOSYAADI"",R1C1),SEARCH(""]"",CELL(""DOSYAADI"",R1C1),1)+1,31),INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!A:A""),0),MATCH(R1C,INDIRECT(""'""&TEXT(RC1,""gg.aa.yyyy"")&""'!1:1""),0))"
        .Value = .Value
        
    End With
    End With
     End With
    
    
    
End Sub

Bu şekilde yaptım doğru sonuç veriyor ama emin olamadım değerleri formül olarak yazmadıgı için kasma yaşatmıyor pek
 
Elbette çevirebilirsiniz.

Önce kod ile hücrelere formülü yazdırın. Sonra sonuçlarını kontrol ettikten sonra değere çevirme satırlarını devreye sokarsınız.

Böylece kontrollü şekilde ilerlemiş olursunuz.
 
Tamamdır hocam tekrardan teşekkür ederim iyi günler dilerim
 
Geri
Üst