• DİKKAT

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

Yolluk oran hesabına ait formül

Förmül

Başka bir başlık altında sordum
 
Son düzenleme:
Formülü ekteki dosyaya göre sarı bölümleri nasıl düzenleriz..

Dosyanızdaki tarihler tarih formatında saatlerde saat formatında olmalı

kod:

Kod:
Function harcirah_hesapla(cikis_tarih, cikis_saat, donus_tarih, donus_saat)
If IsDate(cikis_tarih) = False Then harcirah_hesapla = "": Exit Function
If IsDate(donus_tarih) = False Then harcirah_hesapla = "": Exit Function


If cikis_saat = "" Then harcirah_hesapla = "": Exit Function
If donus_saat = "" Then harcirah_hesapla = "": Exit Function

cikis_saat = Format(cikis_saat, "hh") * 60 + Format(cikis_saat, "nn") * 1
donus_saat = Format(donus_saat, "hh") * 60 + Format(donus_saat, "nn") * 1
If cikis_saat <= 0 Then harcirah_hesapla = "": Exit Function
If donus_saat <= 0 Then harcirah_hesapla = "": Exit Function

        'MsgBox Mid(cikis_saat, 1, 2)
        'MsgBox Format(donus_saat, "hh") * 60
        'MsgBox Format(donus_saat, "nn") * 1
        'MsgBox cikis_saat & Chr(10) & donus_saat
        '05:00 300
        '12:00 720
        '13:00 780
        '19:00 1140
        '23:59 1380
        '24:00 0

If cikis_tarih = donus_tarih Then
If cikis_saat <= 780 And donus_saat >= 780 And donus_saat > 1140 Then
harcirah_hesapla = "2/3"
ElseIf cikis_saat < 780 And donus_saat > 780 Then
harcirah_hesapla = "1/3"
ElseIf cikis_saat > 780 And donus_saat > 1140 Then
harcirah_hesapla = "1/3"
Else
harcirah_hesapla = ""
End If
ElseIf cikis_tarih < donus_tarih Then
harcirah_hesapla = donus_tarih - cikis_tarih

Else
harcirah_hesapla = ""
End If
End Function


H3 hücresinede şu formülü yapın

Kod:
=harcirah_hesapla(C3;D3;F3;G3)
 
Bu uygulamada saat formatının virgülle yapılmış şekli

kod:

Kod:
Function harcirah_hesapla2(cikis_tarih, cikis_saat, donus_tarih, donus_saat)
If IsDate(cikis_tarih) = False Then harcirah_hesapla2 = "": Exit Function
If IsDate(donus_tarih) = False Then harcirah_hesapla2 = "": Exit Function


If cikis_saat = "" Then harcirah_hesapla2 = "": Exit Function
If donus_saat = "" Then harcirah_hesapla2 = "": Exit Function


'virgül formatlı bölüm  (13,15) gibi
'-------------------------------------------
deg1 = Split(cikis_saat, ",")
If UBound(deg1) > 0 Then
cikis_saat = (deg1(0) * 60) + (deg1(1) * 1)
Else
cikis_saat = (cikis_saat * 60)
End If

deg2 = Split(donus_saat, ",")
If UBound(deg2) > 0 Then
donus_saat = (deg2(0) * 60) + (deg2(1) * 1)
Else
donus_saat = (donus_saat * 60)
End If
'------------------------------------------

'saat formatlı bölüm (13:15) gibi
'-------------------------------------------------------------------------
'cikis_saat = Format(cikis_saat, "hh") * 60 + Format(cikis_saat, "nn") * 1
'donus_saat = Format(donus_saat, "hh") * 60 + Format(donus_saat, "nn") * 1
'-------------------------------------------------------------------------

If cikis_saat <= 0 Then harcirah_hesapla2 = "": Exit Function
If donus_saat <= 0 Then harcirah_hesapla2 = "": Exit Function

If cikis_tarih = donus_tarih Then
If cikis_saat <= 780 And donus_saat >= 780 And donus_saat > 1140 Then
harcirah_hesapla2 = "2/3"
ElseIf cikis_saat < 780 And donus_saat > 780 Then
harcirah_hesapla2 = "1/3"
ElseIf cikis_saat > 780 And donus_saat > 1140 Then
harcirah_hesapla2 = "1/3"
Else
harcirah_hesapla2 = ""
End If
ElseIf cikis_tarih < donus_tarih Then
harcirah_hesapla2 = donus_tarih - cikis_tarih * 1

Else
harcirah_hesapla2 = ""
End If
End Function
 
Harcirah hesabi

Hocam formülünüzü uyarlamaya çalıştım ancak sanırım birşeyler hatalı inceleyebilirmisiniz ?
 

Ekli dosyalar

Hocam formülünüzü uyarlamaya çalıştım ancak sanırım birşeyler hatalı inceleyebilirmisiniz ?

Formülün sol tarafında yazan açıklamalar doğrultusunda oluşturun.

sizin formülünüz

=harcirah_hesapla2(C8;D8;E8;F8)

Formülün açıklaması
çıkış_tarihi,çıkış_saati,dönüş_tarihi,dönüş_saati

olması gereken formül

=harcirah_hesapla2(C8;E8;D8;F8)

siz çıkış_saati ile dönüş_saatinin durumlarını ters yazmışsınız.
 
Günlük Harcırah Hesabı

halit3 Hocamın kodları ile düzeltilmiştir. (biraz oynama yaptım kusura bakmayın)

Aynı tarihte saat: 13.00 ü aşarsa 1/3
Aynı tarihte saat: 19.00u aşarsa 2/3
tarih değişikliğinde ise gün farkı *1 gün olarak düzenlendi.
 

Ekli dosyalar

Son düzenleme:
halit3 Hocamın kodları ile düzeltilmiştir. (biraz oynama yaptım kusura bakmayın)

Aynı tarihte saat: 13.00 ü aşarsa 1/3
Aynı tarihte saat: 19.00u aşarsa 2/3
tarih değişikliğinde ise gün farkı *1 gün olarak düzenlendi.

Kod düzgün çalışıyor kodu iki nokta üst üste ve virgil ile yazılan saat farmatlarınıda algılıyor.

burada yapılması gereken saat hücrelerini metin olarak yapmak (hücreleri biçimlendir/sayı/metin)

kod:

Kod:
Function harcirah_hesapla3(cikis_tarih, cikis_saat, donus_tarih, donus_saat)

If IsDate(cikis_tarih) = False Then harcirah_hesapla3 = "": Exit Function
If IsDate(donus_tarih) = False Then harcirah_hesapla3 = "": Exit Function

If cikis_saat = "" Then harcirah_hesapla3 = "": Exit Function
If donus_saat = "" Then harcirah_hesapla3 = "": Exit Function

If UBound(Split(cikis_saat, ":")) > 0 Then
isaret = ":"
ElseIf UBound(Split(cikis_saat, ",")) > 0 Then
isaret = ","
ElseIf UBound(Split(cikis_saat, " ")) > 0 Then
isaret = " "
Else
isaret = ""
End If


'virgül formatlı bölüm  (13,15) gibi
'-------------------------------------------
If isaret = "," Then
deg1 = Split(cikis_saat, ",")
If UBound(deg1) > 0 Then
cikis_saat = (deg1(0) * 60) + (deg1(1) * 1)
Else
cikis_saat = (cikis_saat * 60)
End If

deg2 = Split(donus_saat, ",")
If UBound(deg2) > 0 Then
donus_saat = (deg2(0) * 60) + (deg2(1) * 1)
Else
donus_saat = (donus_saat * 60)
End If
End If
'------------------------------------------

'saat formatlı bölüm (13:15) gibi
'-------------------------------------------------------------------------
If isaret = ":" Then
cikis_saat = Format(cikis_saat, "hh") * 60 + Format(cikis_saat, "nn") * 1
donus_saat = Format(donus_saat, "hh") * 60 + Format(donus_saat, "nn") * 1
End If
'-------------------------------------------------------------------------

If cikis_saat <= 0 Then harcirah_hesapla3 = "": Exit Function
If donus_saat <= 0 Then harcirah_hesapla3 = "": Exit Function

'MsgBox Mid(cikis_saat, 1, 2)
'MsgBox Format(donus_saat, "hh") * 60
'MsgBox Format(donus_saat, "nn") * 1
'MsgBox cikis_saat & Chr(10) & donus_saat
'05:00 300
'12:00 720
'13:00 780
'19:00 1140
'23:59 1380
'24:00 0


If cikis_tarih = donus_tarih Then
If cikis_saat <= 780 And donus_saat >= 780 And donus_saat > 1140 Then
harcirah_hesapla3 = "2/3"
ElseIf cikis_saat < 780 And donus_saat > 780 Then
harcirah_hesapla3 = "1/3"
ElseIf cikis_saat > 780 And donus_saat > 1140 Then
harcirah_hesapla3 = "1/3"
Else
harcirah_hesapla3 = ""
End If
ElseIf cikis_tarih < donus_tarih Then
harcirah_hesapla3 = donus_tarih - cikis_tarih * 1

Else
harcirah_hesapla3 = ""
End If
End Function
 
Teşekkürler Halit bey, bir günden fazla seyahat edenlerde doğrudur, burada zor olan ise bir çok ihtimali bulunan bir günden az olan süreler için aşağıdaki maddeye uyarlamak. Bunu yapabildiğimizde çok büyük bir işi halletmiş olacağız.
Teşekkürler.

Madde 39 – (Değişik: 11/12/1981 - 2562/16 md.)

Resmi bir görevle memuriyet mahalli içinde bir yere gönderilenlere gündelik verilmez. Geçici bir görevle memuriyet mahalli dışındaki bir yere gönderilenlerden, buralarda ve yolda öğle (saat 13.00) ve akşam (saat 19.00) yemeği zamanlarından birini geçirenlere 1/3, ikisini geçirenlere 2/3 oranında ve geceyi de geçirenlere tam gündelik verilir.

Bu kod saat formatını : iki nokta üst üste ve , virgül formatlarını ayrı değerlendiriyor ve ayrıca hücre formatı metin veya saat biçiminide değerlendiriyor.

Eğer kod ile bir sıkıntı olursa kırmızı yerleri (=) eşittir işaretlerini kaldırın veya > büyüktür işareti yada < küçüktür işaretinin sağ tarafına = eşittir işareti koyun (>=) (<=) bunun gibi


kod:

Kod:
Function harcirah_hesapla6(cikis_tarih, cikis_saat, donus_tarih, donus_saat)

If IsDate(cikis_tarih) = False Then harcirah_hesapla6 = "": Exit Function
If IsDate(donus_tarih) = False Then harcirah_hesapla6 = "": Exit Function

If cikis_saat = "" Then harcirah_hesapla6 = "": Exit Function
If donus_saat = "" Then harcirah_hesapla6 = "": Exit Function


If UBound(Split(cikis_saat, ",")) > 0 Then
If Left(cikis_saat, 1) > 0 Then
cikis_saat = Replace(cikis_saat, ",", ":")
End If
End If


If UBound(Split(donus_saat, ",")) > 0 Then
If Left(donus_saat, 1) > 0 Then
donus_saat = Replace(donus_saat, ",", ":")
End If
End If


cikis_saat = Val(Mid(Left(Format(cikis_saat, "0.000000000"), 11), 3, 9))
donus_saat = Val(Mid(Left(Format(donus_saat, "0.000000000"), 11), 3, 9))


If cikis_saat <[COLOR="Red"]=[/COLOR] 0 Then harcirah_hesapla6 = "": Exit Function
If donus_saat <[COLOR="red"]=[/COLOR] 0 Then harcirah_hesapla6 = "": Exit Function

If cikis_tarih = donus_tarih Then

If cikis_saat [COLOR="red"]<[/COLOR] 541666667 And donus_saat [COLOR="red"]>[/COLOR] 541666667 And donus_saat [COLOR="Red"]>[/COLOR] 791666667 Then
harcirah_hesapla6 = "2/3"
ElseIf cikis_saat <[COLOR="red"]=[/COLOR] 541666667 And donus_saat [COLOR="red"]>[/COLOR] 541666667 Then
harcirah_hesapla6 = "1/3"
ElseIf cikis_saat >[COLOR="red"]=[/COLOR] 541666667 And donus_saat [COLOR="red"]>[/COLOR] 791666667 Then
harcirah_hesapla6 = "1/3"
Else
harcirah_hesapla6 = ""
End If

ElseIf cikis_tarih < donus_tarih Then
harcirah_hesapla6 = donus_tarih - cikis_tarih * 1

Else
harcirah_hesapla6 = ""
End If
End Function

bu kodda farklı bir çözüm getiriyor.

kod:

Kod:
Function harcirah_hesapla7(cikis_tarih, cikis_saat, donus_tarih, donus_saat)

If IsDate(cikis_tarih) = False Then harcirah_hesapla7 = "": Exit Function
If IsDate(donus_tarih) = False Then harcirah_hesapla7 = "": Exit Function

If cikis_saat = "" Then harcirah_hesapla7 = "": Exit Function
If donus_saat = "" Then harcirah_hesapla7 = "": Exit Function


If UBound(Split(cikis_saat, ",")) > 0 Then
If Left(cikis_saat, 1) > 0 Then
cikis_saat = Replace(cikis_saat, ",", ":")
End If
End If


If UBound(Split(donus_saat, ",")) > 0 Then
If Left(donus_saat, 1) > 0 Then
donus_saat = Replace(donus_saat, ",", ":")
End If
End If


cikis_saat = Val(Mid(Left(Format(cikis_saat, "0.000000000"), 11), 3, 9))
donus_saat = Val(Mid(Left(Format(donus_saat, "0.000000000"), 11), 3, 9))
'MsgBox donus_saat

If cikis_saat <= 0 And donus_saat <= 0 Then harcirah_hesapla7 = "": Exit Function
'If donus_saat <= 0 Then harcirah_hesapla7 = "": Exit Function

If cikis_tarih = donus_tarih Then

If cikis_saat < 541666667 And donus_saat > 791666667 Then
harcirah_hesapla7 = "2/3"
ElseIf cikis_saat < 541666667 And donus_saat > 541666667 Then
harcirah_hesapla7 = "1/3"
ElseIf cikis_saat >= 541666667 And donus_saat > 791666667 Then
harcirah_hesapla7 = "1/3"
ElseIf cikis_saat = 541666667 And donus_saat = 791666667 Then
harcirah_hesapla7 = "1/3"
ElseIf cikis_saat = 791666667 And donus_saat = 0 Then
harcirah_hesapla7 = "2/3"
ElseIf cikis_saat = 791666667 And donus_saat < 541666667 Then
harcirah_hesapla7 = "2/3"
ElseIf cikis_saat = 791666667 And donus_saat > 791666667 And donus_saat < 999988426 Then
harcirah_hesapla7 = "1/3"


Else
harcirah_hesapla7 = ""
End If

ElseIf cikis_tarih < donus_tarih Then
harcirah_hesapla7 = donus_tarih - cikis_tarih * 1

Else
harcirah_hesapla7 = ""
End If
End Function
 
Halit hocam..! Yukarıdaki Mesai Harcırah Dosyasını ben 1 Haftadır Excell Web e koyuyorum cevap veren çıkmadı. birde baktım başkasına cevap yazılmış. Önemli değil ..Yeterki cevabımı alayım. yukarıdaki kodları yazdım Hiç çalışmadı Ayriyeten mesai cetvelinin formatı değiştirilmiş. resmi evrak formatında değişiklik yapamıyoruz. Mesai cetvelindeki Harcırah tekabül edenlerin harcırah sayfasına aynen işlenmesi gerekiyor.. Selamlar..
 
Geri
Üst