önceki döneme ait bakiyeyi hesaplattırmak

Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
Merhaba, filtre uygulanmış bir tabloda belirli bir tarih aralığını seçince, o tarihten önceki son bakiyeyi başka bir hücreye formüle etme konusunda yardımcı olabilir misiniz? Başka bir kodlu ürün veya başka bir tarih aralığı seçince kendiliğinden değişebilmeli. örnek bir tablo linki ekliyorum.

http://s2.dosya.tc/server2/ptfxyq/ornek.xlsx.html
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Alternatif olarak aşağıdaki kodu bir modüle yapıştırın ve sayfanıza bir düğme ekleyerek bu makroyu o düğmeye atayın. Süzme yaptıktan sonra düğmeye bastığınızda önceki bakiyeyi F9 hücresine yazar:

Kod:
Sub oncekibakiye()
son = Cells(Rows.Count, "F").End(3).Row
[F9] = Cells(son, "F") + WorksheetFunction.Subtotal(9, [E10:E1000])
End Sub
 
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
Üstadım teşekkür ederim. Aslında benim tablomda başka satırlarda var ben basitçe bir tablo yapıp eklemiştim. Sizin formülleri düzenleyip kendi tabloma uyguladım ancak beceremedim sanırım. Birebir yeni bir tablo eklesem yardımcı olur musunuz. K4 hücresi formülize edilecek. (Formüllerden Ad oluşturdum ama bakiyeyi getirtemedim)
yeni tablo: http://s2.dosya.tc/server2/q7sy67/ornek.xlsx.html
 
Son düzenleme:

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Son dosyanıza göre aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub oncekibakiye()
son = Cells(Rows.Count, "K").End(3).Row
[K4] = Cells(son, "K") + WorksheetFunction.Subtotal(9, [J6:J1000]) - WorksheetFunction.Subtotal(9, [I6:I1000])
End Sub
Bundan sonraki sorularınızda örnek dosyanızın asıl dosyanızla aynı yapıda olmasına dikkat ediniz.
 
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
Son dosyanıza göre aşağıdaki kodları bir modüle kopyalayıp deneyiniz:

Kod:
Sub oncekibakiye()
son = Cells(Rows.Count, "K").End(3).Row
[K4] = Cells(son, "K") + WorksheetFunction.Subtotal(9, [J6:J1000]) - WorksheetFunction.Subtotal(9, [I6:I1000])
End Sub
Bundan sonraki sorularınızda örnek dosyanızın asıl dosyanızla aynı yapıda olmasına dikkat ediniz.
Çok teşekkür ederim. Sakman26 adlı üyenin formülünü bu tabloya göre düzenleyebilir miyiz.
 
Son düzenleme:
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
hocam, önceki bakiye değerleri doğru değil maalesef, sizin formülünüzde filtre uygulunan koda ve tarihe göre ilk hareket tutarındaki bakiyeyi veriyor. O harekete ait borç veya alacak tutarı dahil edilmeden önceki bakiye lazım bana.

İlk cevabınızdaki yöntem 1 de sonuçlar doğru idi. O formülü sonraki eklediğim tabloya uygulayabilir misiniz.
 
Son düzenleme:
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
sizin gönderdiğiniz ilk örneğe bakıldığında NOT yazmışsınız ve demişsiniz ki
1 - tarih aralığını 15 haziran ve sonrası seçtiğimde 15 hazirandan önceki 100.01.001 kodlu ürünün bakiyesini bu hücreye getirmem gerekli
2 - G158 hücresinde ise, aslında 14 hazirandan devreden bakiye -21.145,21 ( F158 : -21.228,92 ve E158 : 83,71)
* no lunun açıklaması : 14 hazirana baktığımızda , son bakiye - Ayın 15. in ilk hareketi = Ayın 15. in ilk bakiyesi olacaktır. ( yani 1 ve 2 de söyledikleriniz gibi)
Diğer bir deyişle : (14.06. için) -21.145,21-83,71 = -21.228,92 olacaktır.
Bu demektir ki tersine gidersek
ilk günün Bakiyesi + ilk günün harcaması = Bir önceki günün bakiyesi olacaktır ki.... Kurulan formül de böyledir.
Dosyanıza baktığınızda filtre edilen tarihte, Witdrawn kolonu 0 ise ( ki dosyanızda öyle) o zaman filtre edilen tarihteki Balance kolonundaki değeri yazacaktır NORMAL olarak...
 
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
sizin gönderdiğiniz ilk örneğe bakıldığında NOT yazmışsınız ve demişsiniz ki
1 - tarih aralığını 15 haziran ve sonrası seçtiğimde 15 hazirandan önceki 100.01.001 kodlu ürünün bakiyesini bu hücreye getirmem gerekli
2 - G158 hücresinde ise, aslında 14 hazirandan devreden bakiye -21.145,21 ( F158 : -21.228,92 ve E158 : 83,71)
* no lunun açıklaması : 14 hazirana baktığımızda , son bakiye - Ayın 15. in ilk hareketi = Ayın 15. in ilk bakiyesi olacaktır. ( yani 1 ve 2 de söyledikleriniz gibi)
Diğer bir deyişle : (14.06. için) -21.145,21-83,71 = -21.228,92 olacaktır.
Bu demektir ki tersine gidersek
ilk günün Bakiyesi + ilk günün harcaması = Bir önceki günün bakiyesi olacaktır ki.... Kurulan formül de böyledir.
Dosyanıza baktığınızda filtre edilen tarihte, Witdrawn kolonu 0 ise ( ki dosyanızda öyle) o zaman filtre edilen tarihteki Balance kolonundaki değeri yazacaktır NORMAL olarak...
ilk günün "Balance" + ilk günün "withdrawn" - "ilk günün deposited" = Bir önceki günün bakiyesi olacaktır. deposited kolonu da formüle eklenmeli.
 
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
Ne söylemememi istiyorsanız , onu söyleyeyim...

her zaman söylediğimiz gibi,
ek eklerken, dosyanın yapısına bire bir uygun örnek göndermeniz istenir. Zira sonrasında "gönderdiğiniz dokumanda çalışıyor ama kendi dokümanıma uyarlayamadım" benzeri istekler geliyor.
Ek istenmekteki amaç da bu zaten..
Sanıyorum ad tanımlamalarını yaptınız. Formül zaten bir hücrede var.

İlave Not : Formüllerde gördüğünüz Kriter KTF ile hesaplanıyor. Kendi dosyanıza Module açarak makroyu kaydetmek ve dosyayı da .xlsm uzantılı kaydetmek gerekir. Bunu yaptınız mı? sanıyorum bu eksik...
 
Son düzenleme:
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
Ne söylemememi istiyorsanız , onu söyleyeyim...

her zaman söylediğimiz gibi,
ek eklerken, dosyanın yapısına bire bir uygun örnek göndermeniz istenir. Zira sonrasında "gönderdiğiniz dokumanda çalışıyor ama kendi dokümanıma uyarlayamadım" benzeri istekler geliyor.
Ek istenmekteki amaç da bu zaten..
Sanıyorum ad tanımlamalarını yaptınız. Formül zaten bir hücrede var.

İlave Not : Formüllerde gördüğünüz Kriter KTF ile hesaplanıyor. Kendi dosyanıza Module açarak makroyu kaydetmek ve dosyayı da .xlsm uzantılı kaydetmek gerekir. Bunu yaptınız mı? sanıyorum bu eksik...
ustadım dediğiniz gibi module girişi yaptım nadiren doğru sonuç veriyor. Çoğu zaman boş getiriyor sonucu veya yanlış sonuç veriyor. Benim listem aslında 1000 satırdan daha fazla bunun bir etkisi olabilir mi. sizlere verdiğim örnek tablo bir kaç satırdan oluşuyordu. Mesela aynı tarihte iki tane hareket varsa o ikisinin bakiyesini topluyor bunun gibi hatalar içeriyor.

[/url][/IMG]
 
Son düzenleme:
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
selam
adlandırmalar yapıldığından kolonlar dinamik olarak kullanılmakta. Bu da satır adedidinin öneminin olmadığını söylemektedir.
Dosyayı tam olarak görmeden bir şey diyemeyeceğim.
Özelden yazıp mail adresi vereceğim. İsterseniz mailden gönderin.
 
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
selam
adlandırmalar yapıldığından kolonlar dinamik olarak kullanılmakta. Bu da satır adedidinin öneminin olmadığını söylemektedir.
Dosyayı tam olarak görmeden bir şey diyemeyeceğim.
Özelden yazıp mail adresi vereceğim. İsterseniz mailden gönderin.
Üst mesajda düzeneleme yapıp bir örnek resim ekledim. Örneğin hata ile ilgili; 18.11.2015 aynı tarihli iki hareketin bakiyesini toplayıp, aynı iki hareketteki deposited tutarını bu toplamdan çıkarmış ve önceki dönem bakiyesini vermiş. Belki burada 2. bir kısta olarak eğer aynı tarihte birden fazla hareket varsa ilk fiş numaralı hareketin bakiyesi ile ilgili formül kurulabilir mi?
 
Son düzenleme:
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
Burada haklısın.
TOPLA.ÇARPIM formülü ile yapınca aynı gündeki hareketleri toplayacaktır.
Formülü indise çevirelim.
Yani hücreye..

Kod:
=EĞER(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))="";"";İNDİS(Balance;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1)+İNDİS(Withdrawn;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1)-İNDİS(Deposited;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1))
formülünü yazınız.. Formül DİZİ formülüdür. Formülün hücreye girişi ENTER ile değil, CTRL+SHIFT+ENTER ile (3 tuşa aynı anda basarak) yapılmalıdır. Doğru girildiğinde Formül { } ayraçlar içerisine otomatik olarak alınacaktır. Ayraç olmazsa ya da Manuel olarak siz yazarsanız formül çalışmayacaktır.
 
Katılım
16 Mayıs 2012
Mesajlar
21
Excel Vers. ve Dili
2008
Burada haklısın.
TOPLA.ÇARPIM formülü ile yapınca aynı gündeki hareketleri toplayacaktır.
Formülü indise çevirelim.
Yani hücreye..

Kod:
=EĞER(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))="";"";İNDİS(Balance;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1)+İNDİS(Withdrawn;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1)-İNDİS(Deposited;KAÇINCI(Kriter(DOLAYLI(ADRES(SATIR(Başlık);2)))&ALTTOPLAM(5;Date);KOD&Date;0);1))
formülünü yazınız.. Formül DİZİ formülüdür. Formülün hücreye girişi ENTER ile değil, CTRL+SHIFT+ENTER ile (3 tuşa aynı anda basarak) yapılmalıdır. Doğru girildiğinde Formül { } ayraçlar içerisine otomatik olarak alınacaktır. Ayraç olmazsa ya da Manuel olarak siz yazarsanız formül çalışmayacaktır.

Üstadım Allah razı olsun bu iyi oldu. Ancak zaman zaman rakam getirmiyor. Kapatıp tekrar açınca veya bir kaç deneme neticesinde getiriyor. Ama işimi görür. Çok sağolun.
 
Katılım
31 Ocak 2012
Mesajlar
2,430
Excel Vers. ve Dili
Excel 2010 , Türkçe
Altın Üyelik Bitiş Tarihi
24.01.2019
rica ediyorum..
kolay gelsin..
 
Üst