Yan sekmeden yalnızca istenen aya ait veri nasıl çekilir?

Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe

Ekli dosyada küçük bir örneğini oluşturduğum dosyada, çok satırlı bir "Kasa" sekmesi var. (Kasa sekmesi için "kayit" adında bir dinamik ad tanımlaması yaptım.)

"Ozet" sekmesinin [B4] hücresine herhangi bir ayın başını yani ayın ilk gününü yazdığımda, yandaki kasa sekmesinden, o ayın sonuna kadar olan tüm kayıtları çekip listelemesini istiyorum. Daha önce farklı konularda sormuş olduğum şeyleri harmanlayıp bir şeyler yapmak istedim ama doğru formülleri yazmayı beceremedim.

Ozet sekmesinde böyle bir işlem yapmak mümkün mü?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Öncelikle AD tanımlamanız hatalı.
Zira Mak(B:B) dediğinizde hücrelerdeki en büyük tarih sayısına göre bir satır aralığı belirler. Yani 44 bin civarında bir satırı seçiyorsunuz.

Bunun yerine şöyle kullanabilirsiniz.
=KAYDIR(Kasa!$B$3;1;;BAĞ_DEĞ_DOLU_SAY(Kasa!$B:$B)-1;3)

Asıl sorunuz içinse KOD ile çözümü aşağıdadır.
Verdiğim kodu Ozer sayfanızın kod sayfasına aynen yapıştırın.
Ozet sayfasında B4 hücresini değiştirdiğinizde çalışacaktır.

C++:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Intersect(Target, [B4]) Is Nothing Then Exit Sub
    If Not IsDate(Range("B4")) Then Exit Sub
    Application.EnableEvents = False
    Veri = Worksheets("Kasa").Range("B4").Resize(Worksheets("Kasa").Range("B" & Rows.Count).End(3).Row - 3, 3).Value
    ReDim Liste(1 To UBound(Veri), 1 To 3)
    For i = 1 To UBound(Veri)
        If Year(Veri(i, 1)) = Year(Range("B4")) And Month(Veri(i, 1)) = Month(Range("B4")) Then
            Say = Say + 1
            Liste(Say, 1) = Veri(i, 1)
            Liste(Say, 2) = Veri(i, 2)
            Liste(Say, 3) = Veri(i, 3)
        End If
    Next i
    Range("B4:D" & Rows.Count).ClearContents
    If Say > 0 Then Range("B4").Resize(Say, 3) = Liste
    Application.EnableEvents = True
End Sub
 
Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe
Ömer bey harikasınız, sonsuz teşekkürler ediyorum. İstediğim gibi çalıştı.

Yalnız merak ettiğim için soruyorum; bu sonucu, kod yazmadan, yani hücrelere klasik formüller yazmak yoluyla da yapmak mümkün mü?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Anlatımınıza göre yazılmaz.
Siz B4 hücresine hem elle tarih yazayım hem de B4 e formül sonucu tarih gelsin diyorsunuz.
 
Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe

Ömer bey, ilginize teşekkür ediyorum. "Ozet" sekmesinde veri girilen hücreyi, daha üste [B2]'ye taşıdım. Bu durumda [B2] hücresindeki ayın ilk gününü referans alan formüller yazmak mümkün olabilir mi, [B4:D15] aralığına?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Özet B4 hücresine yapıştırın.
Sağa ve aşağı doğru sürükleyerek çoğaltabilirsiniz.

Dizi formülüdür.

=EĞERHATA(İNDİS(Kasa!B:B;KÜÇÜK(EĞER((Kasa!$B:$B>=$B$2)*(Kasa!$B:$B<=SERİAY($B$2;0));SATIR(Kasa!$A:$A);"");SATIR($A1)));"")
 
Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe
Ömer bey iyi ki varsınız, gönül dolusu teşekkürler...
 
Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe
Ömer bey, genellikle formüllerin içeriklerini iyice irdeleyip, neyi nasıl yaptığını öğrenmeye çalışırım. Böylece benzer konularda bu bilgileri kullanarak kendi formüllerimi yazmaya çabalarım.

Yine aynı şekilde sizin son formülünüzün bileşenlerini anlamaya çalışırken, bir nokta dikkatimi çekti. Kasa sekmesinde dinamik ad (kayit) tanımlamıştık. Son vermiş olduğunuz formülde, bu kayit isimli dinamik ad, formülün hiç bir yerinde referans alınmamış.

Bu durumda kayit dinamik adı işlevsiz mi kalmış oluyor? Yani böyle bir dinamik ad tanımlaması yapılmamış olsaydı da bu son formül yine çalışır mıydı?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Bu formülde AD kullanmadım. AD kullanılmadan formül sonuç ürettiği için formül her durumda çalışır.
Dosyanızın yedeğini alın.
Tanımlanmış adı silin.
Formülün çalıştığını göreceksiniz.

AD kullanarak da çözüm üretilebilir.
 
Katılım
21 Ocak 2008
Mesajlar
309
Excel Vers. ve Dili
Excel 2013 / Türkçe
Teşekkür ediyorum, sağolun...
 
Üst