ÇALIŞMA, GECE ÇALIŞMASI MI GÜNDÜZ ÇALIŞMASI MI?

saka

Altın Üye
Katılım
24 Haziran 2023
Mesajlar
38
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
25-07-2028
Arkadaşlar merhaba,

İşyerinde 24 saat çalışılmaktadır.

Puantaj tablosunda C sütununda çalışılan sürenin gece çalışması mı gündüz çalışması mı olduğunu belirlemek için GECE/GÜNDÜZ kodu kullanacağım.
Bunu Excel ile makrosuz halledebilir miyiz?

Mevzuata göre 20:00-06:00 arasındaki çalışma gece çalışmasıdır.
Çalışmanın bir kısmı gündüz, bir kısmı gece döneminde olduğunda, yarısından fazlası gecede ise o çalışmanın tamamı gece çalışması sayılıyor.

Örneğin, D6 (işe başlama saati) 15:00, F6 (işi bırakma saati) 23:00 ise bu çalışma gündüz çalışmasıdır; çünkü çalışmanın 5 saatlik bölümü gündüz kısmındadır. Bu durumda C6 hücresine GÜNDÜZ yazdırılacak. Diyelim ki D6 (işe başlama saati)16:30, F6 (işi bırakma saati) 00:30 ise bu çalışmanın çoğunluğu (20.00-00:30 arası) gece döneminde olduğu için C6 hücresine GECE yazdırılacak.

Puantaj tablosunda saatler 08:00 formatında.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,568
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
VBA Kodu:
  1. Excel dosyanızda, Alt + F11 tuşlarınaVBA editörüne girin.
  2. Ekle menüsünden Modül seçeneğini tıklayın


Sub GeceGunduzTespiti()
Dim startTime As Double
Dim endTime As Double
Dim workDuration As Double
Dim geceSuresi As Double
Dim toplamSüre As Double

Dim cell As Range

' C sütunundaki her hücreyi kontrol et
For Each cell In Range("D6:D100") ' Başlangıç saati D6' dan D100'e kadar değişebilir
' Başlangıç ve bitiş saatlerini al
startTime = cell.Value
endTime = cell.Offset(0, 2).Value ' F sütunu, yani bitiş saati

' Eğer bitiş saati, başlangıç saatinden önceyse (yani gece geç saatte iş bitmişse)
If endTime < startTime Then
endTime = endTime + 1 ' Bir gün ekle
End If

' Çalışma süresini hesapla
workDuration = endTime - startTime

' Gece çalışması süresini hesapla (20:00 - 06:00 arası)
If startTime < 0.83333 Then ' Saat 20:00'den önce başlamışsa
If endTime > 0.25 Then ' 06:00'ya kadar devam ediyorsa
geceSuresi = Application.WorksheetFunction.Min(endTime, 0.25) - 0.83333 ' Gece süresi
End If
ElseIf startTime >= 0.83333 And startTime < 0.25 Then ' Saat 20:00 - 06:00 arası
geceSuresi = endTime - startTime
End If

' Toplam süreyi karşılaştırarak gece çalışması olup olmadığını belirle
toplamSüre = workDuration
If geceSuresi / toplamSüre > 0.5 Then
cell.Offset(0, 2).Value = "GECE" ' C sütununa GECE yaz
Else
cell.Offset(0, 2).Value = "GÜNDÜZ" ' C sütununa GÜNDÜZ yaz
End If
Next cell
End Sub


dosya eklemediğiniz için deneymedim
 

saka

Altın Üye
Katılım
24 Haziran 2023
Mesajlar
38
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
25-07-2028
Makrosuz çözümü tercih ediyorum.

Yine de makroyu denedim.
Çalışmadı.

Dosya ekliyorum.
 

Ekli dosyalar

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,568
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Formulde iyi sayılmam ama arkadaşlar da destek olabilir
 

saka

Altın Üye
Katılım
24 Haziran 2023
Mesajlar
38
Excel Vers. ve Dili
Excel 2016 Türkçe
Altın Üyelik Bitiş Tarihi
25-07-2028
Yazdığınız kodu gönderdiğim dosya üzerinde denediniz mi?

Formülle çözüm bulunamazsa, makroyu kullanırım.

İlginize teşekkürler.
 

cems

Altın Üye
Katılım
2 Eylül 2005
Mesajlar
2,568
Excel Vers. ve Dili
office 2010 tr 32bit
Altın Üyelik Bitiş Tarihi
13-06-2029
Evet ancak hücre saat formatı olmamasına dayalı olarak hata verdi ve işim nedeni ile ofisten cıktım dondugumde tekrar denerim
 
Üst