çoklu sayfadan koşullu veri alma

ykkli

Altın Üye
Katılım
21 Eylül 2016
Mesajlar
5
Excel Vers. ve Dili
xls '16
Altın Üyelik Bitiş Tarihi
08-03-2027
Merhaba,

aşağıda indirme linkini paylaşmış olduğum dosyada her ay verilen teklifleri takip etmeye çalışıyorum. her ay kendi içinde işin durumuna göre listeleniyor fakat ben tüm yıl içindeki aktif durumda (teklif gön.) olan teklifleri de ayrıca görmek istiyorum. indis kaçıncı dizi formülü gibi yöntemler ile tek sayfadan veri çekme örnekleri var fakat 12 ayrı sayfadan da verileri nasıl çekeceğimi bulamadım. yapmak istediğim şey fonksiyonlar ile yapılabilir mi yoksa makro yazmayı mı denemeliyim ondan da emin değilim açıkçası. sorunun çözümü konusunda yardım edebilecek ya da en azından yol gösterebilecek birileri olursa çok sevinirim.

dosya linki: https://dosya.co/k0eu9t4vghh3/örnek.xlsx.html
 

Ö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,

Aktar kodlarını çalıştırarak deneyiniz.
Kod:
Sub aktar()

    Dim i As Byte, c As Range, Adr As String, syf As String, sat As Long
 
    Application.ScreenUpdating = False
    Sheets("Aktif").Select
    Range("A2:H" & Rows.Count).ClearContents
 
    sat = 2
    For i = 1 To 12
        syf = Format(CDate("1." & i), "mmmm")
     
        If varmi(syf) Then
            Set c = Sheets(syf).[C:C].Find("TEKLİF GÖN.", , xlValues, xlWhole)
            If Not c Is Nothing Then
                Adr = c.Address
                Do
                    Cells(sat, "A") = sat - 1
                    Sheets(syf).Cells(c.Row, "B").Resize(1, 6).Copy Cells(sat, "B")
                    Cells(sat, "H") = syf
                    sat = sat + 1
                    Set c = Sheets(syf).[C:C].FindNext(c)
                Loop While Not c Is Nothing And c.Address <> Adr
            End If
        End If
    Next i
 
End Sub

Function varmi(adi As String) As Boolean
    On Error Resume Next
    varmi = CBool(Len(Worksheets(adi).Name) > 0)
End Function
 

Ekli dosyalar

ykkli

Altın Üye
Katılım
21 Eylül 2016
Mesajlar
5
Excel Vers. ve Dili
xls '16
Altın Üyelik Bitiş Tarihi
08-03-2027
Ömer Bey,

Cevap için teşekkür ederim öncelikle. bu dosya üzerinde çalışıyor evet. peki ben buna daha fazla sütun eklemek istersem nasıl ilerlemem gerekecek? değerleri daha fazla sütunlu bir dosyaya çektiğimde yazdıramadım.
Bir yandan kodu anlamaya çalışıyorum. ama basit düşünerek aralıkları ve veri alınan değerleri güncellediğimde çalıştıramadım.
Sizi de yoruyorum fakat, ben neyi kaçırıyorum acaba bu değişiklikleri yaparken, rica etsem linkini paylaştığım dosya üzerinden açıklayabilir misiniz?


Selamlar.
 

Ö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
Öncelikle sayfa adlarını değiştirmişsiniz.
Sayfa adları ay adı olduğu için kodları o şekilde tanımlamıştım.

Eğer bu şekilde yazacaksanız

syf = Format(CDate("1." & i), "mmmm")

Buradaki 4 m değil 3 m kullanın. Yalnız bu konuya dikkat ederek tüm sayfaları oluşturduktan sonra tümünden veri alıyor mu kontrol edin. Almıyorsa sayfa adlarının tümünün formatı aynı olmak kaydıyla mm, mmm, mmmm formatında olacak şekilde uygun olup olmadığına dikkat edersiniz. Bu bölümle aynı format da olmalıdır.

Resize(1, 26)değil B-Z olduğu için 25 olmalı.

Cells(sat, "Z") = syf Z değil AA olmalı çünkü sayfadan gelen verilerde Z de var.

Range("A2:Z" & Rows.Count).ClearContents AA olacağı için Z değil AA olarak değiştirmeniz gerekir.
 

ykkli

Altın Üye
Katılım
21 Eylül 2016
Mesajlar
5
Excel Vers. ve Dili
xls '16
Altın Üyelik Bitiş Tarihi
08-03-2027
Çok teşekkür ederim, gayet açıklayıcı ve anlaşılır bir anlatım oldu. iyi akşamlar
 
Üst