• DİKKAT

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

Tarih Aralığı ve Başka Koşula göre başka sayfadan verileri getirme.

Katılım
3 Kasım 2010
Mesajlar
230
Excel Vers. ve Dili
Excel 2016 - Türkçe
Merhabalar,

Öncelikle herkesin kurban bayramını en içten dileklerimle kutlar sevdiklerinizle nice bayramlar görmenizi dilerim.

Tarih aralığı ve koşula göre aynı excel sayfası içerisinde ki tablodan verileri alt alta getirmek istiyorum.

Gerekli açıklamaları göndermiş olduğum tabloda detaylı bir şekilde açıkladım.

Konu hakkında yardımcı olursanız sevinirim.

KASA RAPOR ÇALIŞMA.xlsx - 38 KB
 
Merhaba
Yanlış anlamadıysam
Boş bir modüle kopyalayıp bir düğme ye atayıp dener misiniz
Kod:
Sub numan()
Dim S1, S2 As Worksheet
Dim Satır, i As Long
Set S1 = Sheets("Rapor")
Set S2 = Sheets("Kasa Hareket")
S1.Range("A9:I" & Rows.Count).ClearContents
S1.Range("K9:S" & Rows.Count).ClearContents
Satır = 9
Application.ScreenUpdating = False
For i = 2 To S2.Range("A" & Rows.Count).End(3).Row
If S1.Range("K4").Value <= S2.Range("J" & i).Value And S1.Range("K5").Value >= S2.Range("J" & i).Value Then
S1.Range("A" & Satır).Value = S2.Range("J" & i).Value
S1.Range("B" & Satır).Value = S2.Range("K" & i).Value & S2.Range("L" & i).Value
S1.Range("C" & Satır).Value = S2.Range("I" & i).Value
S1.Range("E" & Satır).Value = S2.Range("S" & i).Value
S1.Range("F" & Satır).Value = S2.Range("M" & i).Value
S1.Range("I" & Satır).Value = S2.Range("N" & i).Value
Satır = Satır + 1
End If
Next i
Application.ScreenUpdating = True
MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation, ""
End Sub
Eksikleri aynı mantıkla eklersiniz
 
Merhaba
Yanlış anlamadıysam
Boş bir modüle kopyalayıp bir düğme ye atayıp dener misiniz
Kod:
Sub numan()
Dim S1, S2 As Worksheet
Dim Satır, i As Long
Set S1 = Sheets("Rapor")
Set S2 = Sheets("Kasa Hareket")
S1.Range("A9:I" & Rows.Count).ClearContents
S1.Range("K9:S" & Rows.Count).ClearContents
Satır = 9
Application.ScreenUpdating = False
For i = 2 To S2.Range("A" & Rows.Count).End(3).Row
If S1.Range("K4").Value <= S2.Range("J" & i).Value And S1.Range("K5").Value >= S2.Range("J" & i).Value Then
S1.Range("A" & Satır).Value = S2.Range("J" & i).Value
S1.Range("B" & Satır).Value = S2.Range("K" & i).Value & S2.Range("L" & i).Value
S1.Range("C" & Satır).Value = S2.Range("I" & i).Value
S1.Range("E" & Satır).Value = S2.Range("S" & i).Value
S1.Range("F" & Satır).Value = S2.Range("M" & i).Value
S1.Range("I" & Satır).Value = S2.Range("N" & i).Value
Satır = Satır + 1
End If
Next i
Application.ScreenUpdating = True
MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation, ""
End Sub
Eksikleri aynı mantıkla eklersiniz

Merhabalar,

Öncelikle yardımların için teşekkür ederim.
Söylediğini yaptım ama bütün hareketleri sadece Tahsilatlar bölümüne getirdi.

Kasa Hareket sayfasında ki borç bakiyeleri Tahsilatlar bölümüne, Alacak Bakiyeleri Ödemeler bölümüne getirmesi gerekiyordu.
 
Merhaba
kodlarda kırmızı ile yazılanı inceler misiniz
Neler nere tam olarak gelecek
tam anlamadım
örneğinizde ne nereye gelecekse bir kaç satır manuel olarak doldururmusunuz
Kod:
Sub numan()
Dim S1, S2 As Worksheet
Dim Satır, i As Long
Set S1 = Sheets("Rapor")
Set S2 = Sheets("Kasa Hareket")
S1.Range("A9:I" & Rows.Count).ClearContents
S1.Range("K9:S" & Rows.Count).ClearContents
Satır1 = 9
Satır2 = 9
Application.ScreenUpdating = False
For i = 2 To S2.Range("A" & Rows.Count).End(3).Row
If S1.Range("K4").Value <= S2.Range("J" & i).Value And S1.Range("K5").Value >= S2.Range("J" & i).Value Then
S1.Range("A" & Satır1).Value = S2.Range("J" & i).Value
S1.Range("B" & Satır1).Value = S2.Range("K" & i).Value & S2.Range("L" & i).Value
S1.Range("C" & Satır1).Value = S2.Range("I" & i).Value
S1.Range("E" & Satır1).Value = S2.Range("S" & i).Value
S1.Range("F" & Satır1).Value = S2.Range("M" & i).Value
S1.Range("I" & Satır1).Value = S2.Range("N" & i).Value
Satır1 = Satır1 + 1
[COLOR="Red"]S1.Range("S" & Satır2).Value = S2.Range("O" & i).Value[/COLOR]
Satır2 = Satır2 + 1
End If

Next i
Application.ScreenUpdating = True
MsgBox "İŞLEMİNİZ TAMAMLANMIŞTIR.", vbInformation, ""
End Sub
 
Merhaba,

Sevgili numan şamil
,

Şimdi tekrar gönderiyorum yeni örneği. Hücre içerisine gerekli açıklamaları yaptım belki gizlenmişte olabilir. Ve ne nereye gelecek yazdım. Hatta örnek olsun diye de bir kaç satır manuel doldurdum.

Kısaca şu şekilde özetleyebilirim ki Kasa Hareket sayfasında ki Borç bakiyeler Rapor sayfasında ki Tahsilatlar bölümüne, Alacak bakiyesi verenlerde Ödemeler bölümüne.

KASA RAPOR ÇALIŞMA.xlsx - 39 KB
 
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Merhaba.

Sayın ŞAMİL'in müsadeleriyle.

Yanlış anlamıyorsam aşağıdaki şekilde işlem yapınca istediğiniz sonuca ulaşabilirsiniz.
-- Önce Rapor sayfası C2 ve Q2 hücrelerindeki değerlerin sonlarındaki SATIRBAŞI karakterini silin,
(yani Hareket sayfası I sütunundaki değer ile aynı olmasını sağlayın)
-- Rapor sayfasına bir adet düğme/şekil/metin kutusu ekleyin,
-- Aşağıdaki kod'u boş bir MODÜL'e yapıştırın.
-- Rapor sayfasına eklediğiniz şekil/düğme/metin kutusuna sağ tıklayıp MAKRO ATAyı seçin,
-- Açılan küçük ekranda BARAN adlı makronun adını seçip, işlemi onaylayın.

Artık bu düğme/şekil/metin kutusuna tıkladığınızda istediğiniz işlem gerçekleşir.
Rapor sayfasındaki tarihlerde değişiklik yaparak kod'u tekrar çalıştırın, sonuçları kontrol edin.

NOT: İşlemin uygulandığı belge 10 numaralı cevap ekinde olup kullanılan kodlar belge içerisinde mevcuttur. 06.09.2017 10:13
.
 
Son düzenleme:
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

-- C2 ve Q2 hücrelerini düzelttiğinizden emin olunuz ("kopyala-yapıştır" ile hareket sayfasından getirebilirsiniz).
-- Tarih kontrolüne ilişkin kod'a birkaç satır ilave yaptım.

Sayfayı yenileyerek kod'un yeni halini deneyiniz.

NOT: Çözümün uygulandığı belge 10 numaralı cevap ekinde olup,
kullanılan kodlar ilgili cevap ekindeki belgeden görülebilir. 05.09.2017 01:51

.
 
Rapor sayfasındaki C2 hücresinde hala sonda bir SATIRBAŞI karakteri var (ALT+ENTER ile yazılan satırbaşı),
isterseniz C2 hücresine elle NAKİT KASA TL yazıp deneyin.
Tabi belgeyi MAKRO İÇEREN belge olarak kaydettiğinizden de emin olun.

Ayrıca; başlangıç ve bitiş tarihlerine aynı tarih yazıldığında, Hareket sayfası C sütununda saat bilgisi de yer aldığından, sonuç sıfır oluyor idi.
Bu nedenle; kod'da bir değişiklik daha yaptım (kırmızı renklendirdim), ilk kod cevabımı tekrar kontrol edin isterseniz.

İşlemin uygulandığı belgeye buraya tıklayarak da erişebilirsiniz.

.

Sevgili Ömer BARAN,

İstediğim buydu. Çok çok teşekkür ederim. Ellerine, emeğine sağlık. İyi ki varsınız.

Ama sıkıntı şu tarih aralıklarını 01.08.2017 - 31.08.2017 verdiğim zaman bu tarihten önceki hareketleride getiriyor özellikle ödemeler kısmında. Muhtemelen Tahsilatlar bölümünde de aynı hatayı verecektik. Kontrol ederseniz sevirim.

Devir olayını anlamadığını belirtmiştin. Onu sana hemen anlatmak istiyorum.

ÖNCEKİ GÜNDEN DEVİR İŞLEMİ; Tarih Aralığını bugün yaptığımızı varsayacak olursak. Verdiğimiz tarih aralığından önceki gün sonu özetinin gelmesi gerekir.

KASA RAPOR ÇALIŞMA_BRN2.xlsm - 48 KB
 
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Tekrar merhaba.

Çözüm 10 numaralı cevap ekindeki belgede görülebilir.06.09.2017 10:13
.
 
Sevgili Ömer Baran,

Öncelikle teşekkür ederim ilgilendiğin için ve emeklerine sağlık.

6 numaralı cevapta ki kodu tekrardan yapıştırdım ve tarih sıkıntımızı ortadan kaldırmış olduk.

C sütunundaki C4 hücresine yine veri gelmedi. Tarih aralığını verdiğimiz tarihten önceki gün sonu özetindeki değeri getirmesi gerekiyor.

Sorumu şöyle destekleyecek olursam bakiyelerin ekte gönderdiğim dosyada gibi gelmesi gerekiyor. sadece C4 hücresi için.
Adsız.jpg - 289 KB

Birde bu gelen tarihlerin sıralı gelmesini sağlayabilir miyiz Küçükten büyüğe sıralı gelebilir mi? Karışık geliyor.
 
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Önceki gün devir vs ile ilgili olayı anlayamadığımı zaten belirtmiştim.
Olması gereken sonucu ekran görüntüsü şeklinde değil de, nasıl hesaplanacağını anlamam gerekiyor.

C4 için; anladığım kadarıyla, kodda yer alan r.[C3] = Evaluate("........ satırından hemen sonra aşağıdaki satırı eklerseniz sanırım istediğiniz sonuç elde ediliyor.
Yine sanırım C5 hücresindeki formülü de =C4-C3 olarak değiştirmeniz gerekiyor.

Diğerleri için de, hesaplamanın nasıl yapılacağını açıklamanız gerekiyor.
Ancak örnekler verirken ve olması gereken sonuçları açıklarken;
hem tahsilat hem ödeme işlemi gören tarih aralığı seçerek (tam ay yerine ayın belli günlerini içine alacak şekilde)
açıklama ve örenklendirme yapınız.

.
Kod:
r.[C4] = WorksheetFunction.SumIf(kh.Range("J2:J" & khson), "<=" & tar1, kh.Range("O2:O" & khson))
 
Sevgili Ömer BARAN,

Son gönderdiğin işlemle tamamdır. Herhangi bir sorun kalmadı gibi gözüküyor. Şu anda gayet iyi bir şekilde çalışıyor. Ellerine ve emeğine sağlık. Çok emeğin geçti. Hakkını helal et. Çok teşekkür ediyorum. Tarih sıralaması karışık geliyor. Onu nasıl halledebilirim.?
 
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Tekrar merhaba.

10 numaralı cevap ekindeki belgeyi yeniledim. 06.09.2017 10:13
Sayfayı yenileyerek belgeyi yeniden indirin.
En sola boş bir sütun ekledim ve kodları da buna göre değiştirdim.
Veriler tarih sıralı olarak listeleniyor.
.
.
 
Sevgili Ömer BARAN,

Öncelikle tekrardan çok çok teşekkür ediyorum. Teşekkür etmek bile az kalıyor aslında. Allah razı olsun. Çok güzel bir çalışma oldu açıkcası. Diğer düzeltmelerinle daha bir güzel ve kullanışlı olmuş. Ellerin dert görmesin. Ben bir kaç renk oynaması yaptım. Şimdi normal kullandığım programa ayın 03.09.2017 masraf girdim ve 10,50 TL. kasa çıkışı oldu. Excelde verileri programdan SQL ile çektiğim için 03.09.2017 tarih aralığını vererek çok güzel bir şekilde Ödemeler kısmına geldi. Ama Önceki günden devir kısmı bugüne kadar bütün giderlerin toplamı olan 1.052,18 TL. geldi. Onun hesaplama mantığını sormuştun ama ben sanırım atladım. Tarih aralığına kadar çıkış tutarlarından tahsilat tutarları çıkartılarak gelmesi lazımdı.

Dosyanın son halini gönderiyorum. Bir tek o sorunuda çözdüğümüz zaman artık tamamen bitmiş oluyor.

Çok başını ağırttım kusura bakma artık. Hakkınıda helal et.

2017 KASA RAPOR BILNEX.xlsm - 45 KB
 
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Çözüm 10 numaralı cevap ekinden görülebilir.06.09.2017 10:13

Yanlış anlamıyorsam.
Kod'daki r.[D4] =........ şeklindeki satırın yerine aşağıdaki satırları ekleyin, 03.09.2017 için sonuç: 727,40

Keşke kendisinden büyük ve küçük tarihlerin olduğu bir tarih aralığı ve bunlarda da hem N, hem de O sütununda
veri olan bir örnekten bahsetseydiniz.

Çünkü verilen tarihlerden önceki tarihlere değinmişsiniz ancak, verilen tarih aralığından büyük
tarihler de içeren işlemler olduğunda ne yapılacağını belirtmemişsiniz.
.
Kod:
o = WorksheetFunction.SumIf(kh.Range("J2:J" & khson), "<=" & tar1, kh.Range("O2:O" & khson))
n = WorksheetFunction.SumIf(kh.Range("J2:J" & khson), "<=" & tar1, kh.Range("N2:N" & khson))
r.[D4] = o - n
 
Sevgili Ömer BARAN,

Evet o konudan bahsetmedim ve seni uğraştırdım. Kusura bakma artık. Son değişikliklerle tamamdır.

Son bir şey sormak istiyorum.

2 Satırın da yazdığımız başlıklarda NAKİT KASA TL yazdım. 2 tane de boş yer bıraktım. O iki yere diğer kasalarda hareket gördüğü zaman BOŞ bıraktığım hücrelere kasa adlarını yazdığım zaman o hareketleride getirecek değil mi ?

KREDİ KARTI IYZCO diye bir kasa hareket gördü. KREDİ KARTI IYZCO başlığını yazdığım zaman onun hareketleride gelecek değil mi?

Bazende ek'te gönderdiğim şekilde hata veriyor.

Adsız.jpg - 563 KB
 
Son düzenleme:
İşlemin uygulandığı belge 10 numaralı cevap ekinde.

Çözüm 10 numaralı cevap ekinden görülebilir.06.09.2017 10:13

Şu an bilgisayar başında değilim.
Ama sorunuza cevabım HAYIR. Bu durumdan ilk kez bahsediyorsunuz.
Bunun için aşağıdaki kod satırını yeniden düzenlemek/belki bir satır daha ilave etmek gerekir.
Hata ile ilgili olarak da kontrol ederim müsait olduğumda.
Kod:
kh.Range("A1:AN" & khson).AutoFilter Field:=9, Criteria1:="=" & r.[D2]
 
Geri
Üst