Fazla Mesai Saatinde Gündüz Gece Ayrımı

irfem4

Altın Üye
Katılım
30 Kasım 2010
Mesajlar
195
Excel Vers. ve Dili
2010 tr
örnel excelde bulunan puantajdaki hesaplamaların makro veya formül ile yapılabilmesi mümkün müdür.
 

Ekli dosyalar

Merhaba,
Kendi kullandığım sürümde test ettim düzeltmeler yaptım sonuç istediğiniz gibi çıktı aşağı doğru çoğaltarak deneyiniz.
Çalışmazsa sizde Office sürümünüzün güncel versiyonunu paylaşınız.

*Kodlar yapay zeka tarafından hazırlanmış kontrolü Office 2024 TR ile yapılmış, kodda düzeltmeler yapılmıştır.
İyi çalışmalar


BQ4 Hücresi için (Gündüz Çalışma Saati)
Kod:
=LET(
v;EĞERHATA(E4:BN4*1;0);
cum;SCAN(0;v;LAMBDA(a;b;a+b));
once;cum-v;
fazla;EĞER(cum>$BP4;cum-$BP4;0)-EĞER(once>$BP4;once-$BP4;0);
TOPLA.ÇARPIM(fazla;--(MOD(SÜTUN(E4:BN4)-SÜTUN(E4);2)=0))
)

BR4 Hücresi için (Gece Çalışma Saati)
Kod:
=LET(
v;EĞERHATA(E4:BN4*1;0);
cum;SCAN(0;v;LAMBDA(a;b;a+b));
once;cum-v;
fazla;EĞER(cum>$BP4;cum-$BP4;0)-EĞER(once>$BP4;once-$BP4;0);
TOPLA.ÇARPIM(fazla;--(MOD(SÜTUN(E4:BN4)-SÜTUN(E4);2)=1))
)
 
emeğinize sağlık. excel sürümü 2010. förmülü çalıştıramadım
 
Merhaba,
2010 sistemimde yüklü değil ancak makro daha garanti olabilir düşüncesiyle; çözüm için, modül içine yapıştıracağınız aşağıdaki kod sonrası ilgili alanda KTF leri kullanabilirsiniz. 4.satır için örnek formüller: =FazlaGece(E4:BN4;BP4) =FazlaGunduz(E4:BN4;BP4)
*Kodlar yapay zeka tarafından hazırlanmış ve kontrolü Office 2024 TR de dı, kodda hataya rastlanmadı.
İyi çalışmalar

C:
Option Explicit


'==========================================================
' FAZLA GÜNDÜZ ÇALIŞMASINI HESAPLAR
'==========================================================
Public Function FazlaGunduz(ByVal Puantaj As Range, _
                            ByVal GerekliSaat As Double) As Double

    Dim i As Long
    Dim Toplam As Double
    Dim Calisma As Double
    Dim Fazla As Double

    Toplam = 0
    FazlaGunduz = 0

    For i = 1 To Puantaj.Columns.Count

        If IsNumeric(Puantaj.Cells(1, i).Value) Then

            Calisma = CDbl(Puantaj.Cells(1, i).Value)

            'Gerekli saat henüz dolmadıysa
            If Toplam < GerekliSaat Then

                'Bu vardiyanın sadece fazla kısmını hesapla
                If Toplam + Calisma > GerekliSaat Then

                    Fazla = Toplam + Calisma - GerekliSaat

                    'Tek numaralı hücreler = Gündüz
                    If i Mod 2 = 1 Then
                        FazlaGunduz = FazlaGunduz + Fazla
                    End If

                End If

            Else

                'Gerekli saat zaten dolmuşsa
                'Bu vardiyanın tamamı fazla mesai

                If i Mod 2 = 1 Then
                    FazlaGunduz = FazlaGunduz + Calisma
                End If

            End If

            Toplam = Toplam + Calisma

        End If

    Next i

End Function


'==========================================================
' FAZLA GECE ÇALIŞMASINI HESAPLAR
'==========================================================
Public Function FazlaGece(ByVal Puantaj As Range, _
                          ByVal GerekliSaat As Double) As Double

    Dim i As Long
    Dim Toplam As Double
    Dim Calisma As Double
    Dim Fazla As Double

    Toplam = 0
    FazlaGece = 0

    For i = 1 To Puantaj.Columns.Count

        If IsNumeric(Puantaj.Cells(1, i).Value) Then

            Calisma = CDbl(Puantaj.Cells(1, i).Value)

            'Gerekli saat henüz dolmadıysa
            If Toplam < GerekliSaat Then

                'Bu vardiyanın sadece fazla kısmını hesapla
                If Toplam + Calisma > GerekliSaat Then

                    Fazla = Toplam + Calisma - GerekliSaat

                    'Çift numaralı hücreler = Gece
                    If i Mod 2 = 0 Then
                        FazlaGece = FazlaGece + Fazla
                    End If

                End If

            Else

                'Gerekli saat zaten dolmuşsa
                'Bu vardiyanın tamamı fazla mesai

                If i Mod 2 = 0 Then
                    FazlaGece = FazlaGece + Calisma
                End If

            End If

            Toplam = Toplam + Calisma

        End If

    Next i

End Function
 
Geri
Üst