• DİKKAT

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

Mesai Ücreti Hesaplama

Katılım
6 Mart 2011
Mesajlar
153
Excel Vers. ve Dili
Microsoft Office 2010
Merhaba

Personellerin maaşlarına göre günlük ücretleri belirlenmektedir. Bu personellere Örnek aylık 200 Saat mesai verilmesi gerekiyor. Bunu Ay içerisine otomatik bölmesi gerekiyor. Benim istediğim personele ay içerisinde ne kadar mesai verilecekse Mesai Ücreti (Saat) Alanına yazayım maaşını ve günlük ücretini hesaplayarak ay içinde dağıtmasını istiyorum. Bunu nasıl yapabilirim.

https://drive.google.com/open?id=1RnIRoX23AzFdIcNRzRRIPAr1KED1J-5d
 
Bir formül kurguladım. Deneyin. Mantık hatası varsa düzenleriz.

B2;
Kod:
=($AH2/7,5*1,5)*($AI2/30)+$AH2
 
Hocam işinize yarar mı bilmem ama kısa bir makrolu excel hazırladım. Öncelikle maaş hesapları 30 gün üzerinden yapılır. 31 gün diye bir şey maaş hesabında olmaz. Şubat dahil 30 gün sayılır. O yüzden günü 30'a düşürdüm ve kalan her şeyi tek tuşla yapabilmeniz için döngülü bir makro yazdım. Günlük çalışma saati ve Mesaj Ücret Kat sayısını belirleyebilirsiniz. Ben kanuna uygun olan rakamı yazdım. Aylık maaşını ve mesai saatini yazdıktan sonra HESAPLA tuşuna basın. Eğer form doluysa formu silmeden önce sizi uyarır, eğer form boş ise hesap yapmak için izninizi ister. Bunları da güvenlik tedbiri olarak koydum. Alt+F11 ile makro kodlarına erişebilirsiniz. İstediğiniz kadar da isim ekleyebilirsiniz. Son ismin altına satır açmanız yeterli. G. ÇALIŞMA SAATİ ve MESAİ diye ayırdığım alanları rakam değiştirme harici dokunmayın yoksa tüm makroyu bozarsınız.

https://www.dosyaupload.com/591r

Bu da Makro kodları.

Kod:
Private Sub CommandButton1_Click()
Dim ilk As Integer, son As Integer
Dim v As Integer, yer As Integer, d As Variant
Dim günlük_maas As Integer, a As Variant
Dim csaati_sat As Integer, b As Variant
Dim mksayi_sat As Integer, c As Variant
Dim sütun As Integer, y As Integer
Dim ilk_süt As Integer, son_süt As Integer
Dim bak As Integer
Dim mesaj As VbMsgBoxResult, mesaj2 As VbMsgBoxResult



ilk = 2
son = Range("AG" & Rows.Count).End(xlUp).Row
csaati_sat = Range("A" & Rows.Count).End(xlUp).Row - 1
mksayi_sat = Range("A" & Rows.Count).End(xlUp).Row

ilk_süt = 2
son_süt = Cells(1, Columns.Count).End(xlToLeft).Column - 3

yer = ilk
sütun = ilk_süt

If Not Cells(ilk, ilk_süt) <> 0 Then GoTo vdur
mesaj = MsgBox("Günlük ücret bilgisi temizlensin mi?", vbYesNo)
Select Case mesaj
Case Is = vbYes
    Range(Cells(ilk, ilk_süt), Cells(son, son_süt)).ClearContents
    GoTo vdur
Case Is = vbNo
    GoTo vatla2
End Select




vdur:

mesaj2 = MsgBox("Günlük ücret hesaplansın mı?", vbYesNo)
Select Case mesaj2
    Case Is = vbYes
    For y = ilk To son
    If Cells(yer, sütun).Value <> 0 Then
    yer = yer + 1
    sütun = ilk_süt
    End If
    a = Cells(yer, son_süt + 1) / 30 / Cells(csaati_sat, 7) * Cells(mksayi_sat, 7)
    b = Cells(yer, son_süt + 3) / 30 * a
    c = b + Cells(yer, son_süt + 2)
        For v = ilk_süt To son_süt
        If Not Cells(yer, sütun).Value = 0 Then GoTo vatla
        Cells(yer, sütun) = Replace(Format(c, "#0.00"), ",", ".")
        sütun = sütun + 1
vatla:
        Next v
        
        Next y
    Case ıs = vbNo
    GoTo vatla2:
End Select
vatla2:
End Sub
 
Geri
Üst