=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))
)
=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))
)
=FazlaGece(E4:BN4;BP4) =FazlaGunduz(E4:BN4;BP4)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