Excel Forum

Excel Forum (http://www.excel.web.tr/index.php)
-   Diğer Excel Soruları (http://www.excel.web.tr/forumdisplay.php?f=50)
-   -   Son ödeme günü sorunu (http://www.excel.web.tr/showthread.php?t=55368)

edilli 31-08-2008 15:13

Son ödeme günü sorunu
 
Merhaba
Formda çok aradım ama bulamadım. Benim aradığım şu. Son ödeme tarihinin hafta sonuna veya resmi tatile rastlaması halinde takip eden ilk iş günü son ödeme günü oluyor. Örneğin borç bugün tebliğ edildi ve 15 gün süresi var. 15. gün tatile denk gelmiyorsa problem yok. Bunun formülü çok kolay. Ancak son gün tatile geliyorsa o zaman son günü tatili takip eden ilk iş gününe kaydıran bir formül lazım. Forumda izin hesabı ile ilgili formüller var ama bu formüllerde yalnız iş günü hesaba alınıyor. Benim işime yaramıyor. Benim aradığım 15 günlük süre içinde sadece iş günleri değil tatillerde sayılacak, sadece son gün tatile denk geliyorsa takip eden ilk iş gününü son gün olarak gösterecek. Buna ait formülü bana gönderirseniz sevinirim. Makrosuz, düz formül olmasında fayda var

uzmanamele 31-08-2008 15:22

merhaba
buraya bakınız

http://www.excel.web.tr/showthread.php?t=18175

edilli 02-09-2008 11:29

son ödeme günü sorunu
 
Tekrar merhaba
Son ödeme gününün tatile denk gelmesi halinde tatili takip eden ilk iş gününü son ödeme günü olarak gösteren formülü size sormuştum. İlginize teşekürler hemen cevap geldi. Ancak gelen cevapta aradığımı bulamadım. Zaten soruyu göndermeden önce formdaki tüm konulara, anlatılanlara baktım, aradığımı bulamadığım için size yazdım. Aslında istediğim çok basit. Mesala borç 05.09.2008 tarihinde tebliğ edildi. Normalde son ödeme gününün 15 gün sonrasını bulmak çok kolay. En basitinden 05.09.2008+15 formulünü girdiğimizde sonuç 20.09.2008 çıkar. Ancak 20'si ve 21'i tatile geldiğinden son ödeme günü 22'si olacak. İşte benim istediğim bunu sağlayan formul. Sayfanın herhangi bir yerine o yıldaki tüm tatil günlerini yazacağım. Formül hesaplama yaparken son günün o tatil günlerine denk gelmesi halinde takip eden ilk iş gününü son ödeme günü olarak verecek. Buradan son gün tatile denk gelirse ilk iş gününe kayacak, yoksa diğer hesaplamarda olduğu gibi başından itibaren tam iş günlerini hesaplamayacak.Bu formülü oluşturmak sizin için çok kolaydır ama ben başaramadım. Sorunumu çözerseniz çok sevinirim. Şimdiden çok teşekkürler.

uzmanamele 02-09-2008 11:46

merhaba
A1 de başlangıç tarihi, B1 de gün varsa aşağıdaki formülü deneyiniz

=EĞER(HAFTANINGÜNÜ(A1+B1;2)<6;(A1+B1);EĞER(HAFTANI NGÜNÜ(A1+B1;2)=6;(A1+B1+2);(A1+B1+1)))

Necdet Yeşertener 02-09-2008 12:02

1 Eklenti(ler)
Merhaba,

A1 : Başlangıç Tarihi
B1 : Ödeme Gün Süresi
C1 :

Kod:


=EĞER(HAFTANINGÜNÜ(A1+B1;2)>5;İŞGÜNÜ(A1+B1;1);A1+B1)
=IF(WEEKDAY(A1+B1;2)>5;WORKDAY(A1+B1;1);A1+B1)

WORKDAY(İŞGÜNÜ) bilgisayarınızda yoksa :

Araçlar
Eklentiler den
Analysis ToolPak ı yüklemelisiniz

edilli 02-09-2008 21:41

Son ödeme günü sorunu
 
1 Eklenti(ler)
İlginize çok teşekkür ederim. Yalnız zannederim konuyu ben tam anlatamadım. Verdiğiniz formülde de sadece son ödeme gününe denk gelen cumartesi-pazarı (haftanın günlerini) sonraki ilk iş gününe atlıyor. Ancak son ödeme günü cumartesi-pazar dışındaki resmi ve dini tatil günlerine denk geldiğinde bu formül işe yaramayacaktır. Bunun yerine örneğin birkaç aylık veya o yıldaki tatil günleri bir sütunda alt alta belirtilmeli, formül hesaplama yaparken o tatil günlerini taramalı, son gün bu tatil günlerinden birine veya birkaçına geldiğinde ilk iş gününe atlamalıdır. Toolpak çözümleyicisi veya exceldeki hazır fonksiyon ve işlevler sadece hafta sonu tatillerini esas aldığından istenen sonucu veremez. Örnek dosya ektedir
İlginiz için tekrar teşekkür ederim

Necdet Yeşertener 03-09-2008 23:21

1 Eklenti(ler)
Merhaba,

Kullanıcı Tanımlı Fonksiyon yazmaya çalıştım. Dener misiniz?

Fonksiyon Adı : SonÖdemeGünü
1. Parametre : Borç Başlangıç Tarihi
2. Parametre : Ödeyeceği Gün Sayısı
3. Parametre : Resmi Tatil Günleri (Cumartesi, Pazar Hariç, bu günleri zaten otomatik hesaplıyor)


Kod:


Function SonÖdemeGünü(BaşlangıçTarihi As Date, ÖdemeSüresiGün As Integer, Tatiller As Range)
If IsDate(BaşlangıçTarihi) = False Or IsNumeric(ÖdemeSüresiGün) = False Then
  SonÖdemeGünü = "Yanlış Değer"
  Exit Function
End If
Dim Adet As Integer, Tarih As Date, Durum As Boolean
Tarih = BaşlangıçTarihi + ÖdemeSüresiGün
Durum = False
Do
HaftanınGünü = Weekday(Tarih, vbMonday)
Adet = Application.WorksheetFunction.CountIf(Tatiller, Tarih)
If Adet = 0 And HaftanınGünü < 6 Then
    Durum = True
Else
    Tarih = Tarih + 1
End If
Loop While Durum = False
SonÖdemeGünü = Tarih
End Function

Not : Dosyadaki D ve E sütunlarının bir anlamı yok, tarihi kontrol etmek amacıyla kullandım.

Necdet Yeşertener 05-09-2008 13:33

Herhalde arkadaşımızın işine yaramadı :)

uzmanamele 05-09-2008 13:49

merhaba
işine yaramışdır eminim.
bayramlar için tarihleri listelerken takıldı sanıyorum. aşure günü resmi tatil mi değil mi diye araştırıyor. bulsun geri dönecektir. :hihoho:

edilli 06-09-2008 12:27

Son ödeme günü sorunu
 
Elinize, yüreğinize, emeğinize sağlık, gönderdiğiniz formül işime yaradı. Bir ara kurban bayramı tatillerini ekledim, son ödeme gününün bulunduğu hücredeki formül AD hatası verdi ancak sonra onun sebebini de anladım, o eklemeleri yaparken makroları devre dışı bırakarak exceli açmıştım, sonra makroları etkinleştirerek exceli açtığımda herhangi bir hata vermediğini gördüm. Bu arada aşure günü resmi tatil sayılmıyor, uğraşıp aramanıza gerek yok. Hafta sonları, yılbaşı, resmi ve dini bayram günleri resmi tatil sayılıyor.
Tekrar teşekkürler, iyi çalışmalar.


Saat 23:30

Powered by vBulletin Version 3.7.2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.