Kopyalanan sheet verilerini çekme

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Merhaba,
Öncelikle herkese keyifli çalışmalar, maliyet çalıştığım excel dosyam var ve bu dosyada 8-10 sheet bulunuyor, sheet isimleri masa, kapı, dolap, keson vb. gibi. Sheet içerisinde ise ürünü oluşturan malzeme listesi var, Bir de bu sheetlerden rapor çeken başka bir sheet var, örneğin masa sheetinde
Malzeme, Miktar, Birim Fiyat, Toplam Fiyat
Ayak, 4, 30TL, 120TL

çok basit anlatımla, yukarıdaki gibi 4 ayaklı masa sheetinden 6 ayaklı masa yapmak için kopyaladığımda rapor verilerinin yeni kopyaladığım sheetten de almasını sağlamak istiyorum. Bu bir hayal mı? yapılabilir mi destek verebilir misiniz
 

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,358
Excel Vers. ve Dili
Ofis 365 Türkçe
Merhaba,

Hayaller sonsuz, yapılabilir. Bunun için paylaşım sitelerinden birine örnek dosyanızı eklerseniz ve olması gereken durumu da açıklarsanız, yardımcı olacak arkadaşlara yol göstermiş olursunuz.
 

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Necdet Bey, Teşekkürler

Link aşağıdadır, destekleriniz için şimdiden teşekkür ederim
 

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Dosyada "Rapor" sayfasındaki datalar diğer sayfalardaki Masa, Masa 2, Dolap Dolap 2, vb sayfalardan data çekiyor. (Özet fiyatları çekiyor)
Örneğin yeni bir ürün (Duvar) talep edildiğinde "Duvar 1" sheetini kopyalayıp yeni oluşan sheet içinde düzenlemeleri yaptıktan sonra "Rapor" sheet i "K" sütununa özet değerleri getirmesini istiyorum. istediğimi anlatmaya çalıştım umarım açıklayıcı olmuştur.
 

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Merhaba,
Herhangi bir cevap verilmemiş, sorunu ifade edebildim mi acaba ?
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

-Tüm sayfaların şablonları eşit değil sanırım.
Örneğin, Masa1 de çelik boru fiyatı F295 hücresinde, diğer sayfalarda 306, 309,310 vs.. başlayan var.

-İstediğiniz formülle mi yoksa makroyla mı yapmak istiyorsunuz?
 

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Ömer Bey merhaba,
Doğrudur, tüm sayfaların şablonları eşit değil, her defasında da değişiyor. Çünkü örneğin masa2'de ilave bir satır eklenirse satırlar değişiyor.
Konu ile ilgili bir miktar ilerledim ama aşamadığım bir konu var.

Sheet isimlerini rapor sayfasına getirebildim, amacım bundan sonra vlookup ile değerleri çekmekti fakat takıldım.
Bir Modul oluşturup aşağıdaki kodu eklediğimde sheet isimlerini sayfaya getirebildim, fakat bundan sonrasında takıldım.

Function tumsayfalar(syfno As Integer) As String

Application.Volatile
If syfno <= Worksheets.Count Then
tumsayfalar = Worksheets(syfno).Name
Else
tumsayfalar = ""

End If
End Function

Formül ile yapmak daha uygun görünüyor, fakat hangisinin efektif olacağı konusunda emin değilim. son çalışmamı linkte paylaşıyorum, desteğiniz ve ilginiz için şimdiden çok teşekkür ederim.


 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Rapor sayfasının kod bölümüne kopyalayın. Sayfa aktif olduğundan Rapor sayfası 8.satıra "d" ile tanımlanan sayfalar gelir.
Kopyalama işleminden sonra bir defalık farklı bir sayfaya geçip sonra rapor sayfasına dönün.
Kod:
Private Sub Worksheet_Activate()

    Dim d(), sut As Integer, syf As Worksheet, i As Byte

    d = Array("Masa *", "Dolap *", "kapı *", "Duvar *")
   
    Application.ScreenUpdating = False
    Rows(8).ClearContents
   
    sut = 3
    For Each syf In Worksheets
        For i = 0 To UBound(d)
            If syf.Name Like d(i) Then
                Cells(8, sut) = syf.Name
                sut = sut + 1
                Exit For
            End If
        Next i
    Next
   
End Sub


Daha sonra Rapor sayfası C9 hücresine aşağıdaki formülü yazıp yana ve alt hücrelere kopyalayın.
Kod:
=EĞERHATA(DOLAYLI("'"&C$8&"'!F"&KAÇINCI("ÖZET MALZEME DETAY";DOLAYLI("'"&C$8&"'!B:B");0)+1+SATIRSAY(C$9:C9));"")
 

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
18
Excel Vers. ve Dili
ver:2010 Dil;Eng
Altın Üyelik Bitiş Tarihi
26-08-2026
Rapor sayfasının kod bölümüne kopyalayın. Sayfa aktif olduğundan Rapor sayfası 8.satıra "d" ile tanımlanan sayfalar gelir.
Kopyalama işleminden sonra bir defalık farklı bir sayfaya geçip sonra rapor sayfasına dönün.
Kod:
Private Sub Worksheet_Activate()

    Dim d(), sut As Integer, syf As Worksheet, i As Byte

    d = Array("Masa *", "Dolap *", "kapı *", "Duvar *")
  
    Application.ScreenUpdating = False
    Rows(8).ClearContents
  
    sut = 3
    For Each syf In Worksheets
        For i = 0 To UBound(d)
            If syf.Name Like d(i) Then
                Cells(8, sut) = syf.Name
                sut = sut + 1
                Exit For
            End If
        Next i
    Next
  
End Sub


Daha sonra Rapor sayfası C9 hücresine aşağıdaki formülü yazıp yana ve alt hücrelere kopyalayın.
Kod:
=EĞERHATA(DOLAYLI("'"&C$8&"'!F"&KAÇINCI("ÖZET MALZEME DETAY";DOLAYLI("'"&C$8&"'!B:B");0)+1+SATIRSAY(C$9:C9));"")









Ömer Bey merhaba,
Çok teşekkürler.
 
Üst