• DİKKAT

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

Kopyalanan sheet verilerini çekme

Josiah

Altın Üye
Katılım
28 Şubat 2013
Mesajlar
19
Excel Vers. ve Dili
ver:2010 Dil;Eng
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
 
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.
 
Necdet Bey, Teşekkürler

Link aşağıdadır, destekleriniz için şimdiden teşekkür ederim
 
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.
 
Merhaba,
Herhangi bir cevap verilmemiş, sorunu ifade edebildim mi acaba ?
 
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?
 
Ö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.


 
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));"")
 
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.
 
Geri
Üst