Soru Aylara Göre Verileri Çekme

Katılım
25 Ağustos 2023
Mesajlar
7
Excel Vers. ve Dili
excel office 360
language: TR
merhabalar,
forumda aradım ama istediğimi bulamadım.

bir excel dosyam var ve iki adet çalışma sayfasından oluşuyor
çalışma sayfalarının isimleri 1 ve 2

1 numaralı çalışma sayfasında 4 sütundan oluşan verilerim var
2 numaralı çalışma sayfasına 1 numaralı çalışma sayfasındaki verileri çekmek istiyorum.

1 numaralı çalışma sayfasındaki A sütunu altındaki verileri; 2 numaralı çalışma sayfasındaki A sütununa yazdırmak istiyorum
1 numaralı çalışma sayfasındaki B sütunu altındaki verileri; 2 numaralı çalışma sayfasındaki B sütununa yazdırmak istiyorum
1 numaralı çalışma sayfasındaki C sütunu altındaki verileri; 2 numaralı çalışma sayfasındaki C sütununa yazdırmak istiyorum
1 numaralı çalışma sayfasındaki D sütunu altındaki verileri; 2 numaralı çalışma sayfasındaki D sütununa yazdırmak istiyorum
1 numaralı çalışma sayfasındaki E sütunu altındaki verileri; 2 numaralı çalışma sayfasındaki I sütununa yazdırmak istiyorum

ayrıca şöyle bir durum var;
mesela 8. ay 31 çekiyor ve tüm 8. aydaki verileri 2 numaralı çalışma sayfasında görmek istiyorum.
mesela 9. ay 30 çekiyor ve tüm 9. aydaki verileri 2 numaralı çalışma sayfasında görmek istiyorum.

BİR BUTON YARDIMIYLA VERİLERİ ÇEKMEK İSTİYORUM

eğer ay 30 veya daha az (şubat) çekiyorsa 2 numaralı çalışma sayfasındaki A sütununda bulunan ve 30 dan aşağıda kalan satırın silinmesi istiyorum.
benzer şekilde 30 dan fazla çeken tarihlerde 2 numaralı çalışma sayfasındaki A sütununda bulunan; 30 dan aşağıda kalan ve silinen satırın tekrar gelmesini istiyorum.
sanırım yukarıdaki 2 satır yazı kolay olmalı.

yardımcı olursanız sevinirim. açıkça yazmaya çalıştım.

EK:

 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,597
Excel Vers. ve Dili
2019 Türkçe
Merhaba.
2. sayfaya hangi aya ait verilerin çekileceğin nerede yazıyor?
Yani hangi aya ait verileri çekeceğimizi nerden bileceğiz?
 
Katılım
25 Ağustos 2023
Mesajlar
7
Excel Vers. ve Dili
excel office 360
language: TR
1. sayfada 8. ve 9. ay var yani ornek olarak ekledim. mesela ben 2. sayfaya 12 tane buton eklemek istiyorum. her ay uzerinde yazacak sekilde. her ayin uzerine tikladigimda o ayin verilerini 2. sayfada gormek istiyorum. 8. ve 9. ay ornek oldugu icin 2 tane buton simdilik yeterli. ben vba dan digerlerini eklerim. sadece mantigini kuramadim. kodlari yapamadim. tesekkurler
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,072
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub Ay_Agustos()

    Dim KaynakSayfa As Worksheet
    Dim HedefSayfa As Worksheet
    Dim i As Long, AktarSatir As Long
    Dim SonSatir As Long
    Dim SatirTarihi As Date

    Set KaynakSayfa = ThisWorkbook.Sheets("1")
    Set HedefSayfa = ThisWorkbook.Sheets("2")
   
    HedefSayfa.Range("A2:D1000, I2:I1000").ClearContents

    SonSatir = KaynakSayfa.Cells(KaynakSayfa.Rows.Count, "A").End(xlUp).Row
    AktarSatir = 2

    For i = 2 To SonSatir
        If IsDate(KaynakSayfa.Cells(i, 1).Value) Then
            SatirTarihi = DateValue(KaynakSayfa.Cells(i, 1).Value)
            If Month(SatirTarihi) = 8 Then
                HedefSayfa.Range("A" & AktarSatir & ":D" & AktarSatir).Value = _
                    KaynakSayfa.Range("A" & i & ":D" & i).Value
                HedefSayfa.Cells(AktarSatir, "I").Value = KaynakSayfa.Cells(i, "E").Value
                AktarSatir = AktarSatir + 1
            End If
        End If
    Next i

    MsgBox "Ağustos ayına ait veriler aktarıldı.", vbInformation

End Sub
Sub Ay_Eylul()
' Yukarıdaki kodda sadece şu satırı değiştirin:
If Month(SatirTarihi) = 9 Then
 

muhasebeciyiz

Altın Üye
Katılım
10 Şubat 2006
Mesajlar
1,072
Excel Vers. ve Dili
Office 2016
64 Bit
Altın Üyelik Bitiş Tarihi
21-12-2027
Kod:
Sub AyVerisiGetir(AyNo As Integer)

    Dim KaynakSayfa As Worksheet
    Dim HedefSayfa As Worksheet
    Dim i As Long, AktarSatir As Long
    Dim SonSatir As Long
    Dim SatirTarihi As Date

    Set KaynakSayfa = ThisWorkbook.Sheets("1")
    Set HedefSayfa = ThisWorkbook.Sheets("2")

    HedefSayfa.Range("A2:D1000, I2:I1000").ClearContents

    SonSatir = KaynakSayfa.Cells(KaynakSayfa.Rows.Count, "A").End(xlUp).Row
    AktarSatir = 2

    For i = 2 To SonSatir
        If IsDate(KaynakSayfa.Cells(i, 1).Value) Then
            SatirTarihi = DateValue(KaynakSayfa.Cells(i, 1).Value)
            If Month(SatirTarihi) = AyNo Then
                HedefSayfa.Range("A" & AktarSatir & ":D" & AktarSatir).Value = _
                    KaynakSayfa.Range("A" & i & ":D" & i).Value
                HedefSayfa.Cells(AktarSatir, "I").Value = KaynakSayfa.Cells(i, "E").Value
                AktarSatir = AktarSatir + 1
            End If
        End If
    Next i

    MsgBox MonthName(AyNo) & " ayına ait veriler aktarıldı.", vbInformation

End Sub
Yukardaki makro ortak tek makro alttakiler ise aylara ait butona bağlanacak makronuzdur

Ağustos Butonu:
Sub Ay_Agustos()
Call AyVerisiGetir(8)
End Sub

Eylül Butonu:
Sub Ay_Eylul()
Call AyVerisiGetir(9)
End Sub

Bu sistemle 12 ayı tek makro ile yönetebilirsin
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,597
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Her ay için buton eklemenize gerek yok K2 hücresinden ay seçimi yapabilirsiniz.
Örnek dosya ekte.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim IlkTarih As Date
    Dim GunSayisi As Integer
    Dim Bul As Range
    
    If Not Intersect(Target, Range("K2")) Is Nothing Then
        IlkTarih = DateSerial(2025, Target.Value, 1)
        GunSayisi = DateSerial(2025, Target.Value + 1, 1) - IlkTarih
        Set Bul = Worksheets("1").Range("A:A").Find(what:=IlkTarih, lookat:=xlWhole)
        
        Range("A2:D32, I2:I32").ClearContents
        Range("A2:D" & GunSayisi + 1).Value = Bul.Resize(GunSayisi, 4).Value
        Range("I2:I" & GunSayisi + 1).Value = Bul.Cells(1, "E").Resize(GunSayisi, 1).Value
    End If
End Sub
 

Ekli dosyalar

Necdet

Moderatör
Yönetici
Katılım
4 Haziran 2005
Mesajlar
15,581
Excel Vers. ve Dili
Ofis 365 Türkçe
Bir sürü butonla uğraşmak mantıklı mı?
Kod:
Sub Ornek()

Dim arr As Variant
Dim i   As Long
Dim j   As Long
Dim k   As Integer
Dim Ay  As Variant

Ay = Application.InputBox("Ay Kodunu Giriniz", "Listelenecek Ay", Month(Date), Type:=1)
If Ay = False Then Exit Sub
      
arr = Sayfa1.Range("A1").CurrentRegion
Sayfa2.Range("A1").CurrentRegion.ClearContents

j = 1
For i = 2 To UBound(arr, 1)
    If Month(arr(i, 1)) = Ay Then
        j = j + 1
        For k = LBound(arr, 2) To UBound(arr, 2)
            arr(j, k) = arr(i, k)
        Next k
    End If
Next i

If j > 1 Then
    Sayfa2.Range("A1").Resize(j, UBound(arr, 2)) = arr
    MsgBox "Veriler Aktarılmıştır..."
Else
    MsgBox "Aktarılacak Veri Bulunmadı..."
End If

End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
43,334
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Ofis 365 kullanıyorsunuz. Makroya gerek yok gibi görünüyor.

M1 hücresine ilk tarihi, M2 hücresine son tarihi yazdıktan sonra;

A2 hücresine aşağıdaki formülü uygulayınız.

C++:
=FİLTRE('1'!A:E;('1'!A:A>=M1)*('1'!A:A<=M2))
I sütununa kadar olan kısım boş kalması gerekiyorsa oda ayarlanabilir. Ya da orada farklı bir işlem yapılacaksa onlarda yapılabilir.
 
Katılım
25 Ağustos 2023
Mesajlar
7
Excel Vers. ve Dili
excel office 360
language: TR
Merhaba.

Her ay için buton eklemenize gerek yok K2 hücresinden ay seçimi yapabilirsiniz.
Örnek dosya ekte.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim IlkTarih As Date
    Dim GunSayisi As Integer
    Dim Bul As Range
   
    If Not Intersect(Target, Range("K2")) Is Nothing Then
        IlkTarih = DateSerial(2025, Target.Value, 1)
        GunSayisi = DateSerial(2025, Target.Value + 1, 1) - IlkTarih
        Set Bul = Worksheets("1").Range("A:A").Find(what:=IlkTarih, lookat:=xlWhole)
       
        Range("A2:D32, I2:I32").ClearContents
        Range("A2:D" & GunSayisi + 1).Value = Bul.Resize(GunSayisi, 4).Value
        Range("I2:I" & GunSayisi + 1).Value = Bul.Cells(1, "E").Resize(GunSayisi, 1).Value
    End If
End Sub

HERKESE ÇOK TEŞEKKÜR EDERİM. BUNU KULLANDIM. ÇOK GÜZEL OLDU
 
Üst