yemek ve çay mola sürelerini toplam çalışmadan otomatik olarak çıkarma

Katılım
13 Nisan 2009
Mesajlar
5
Excel Vers. ve Dili
2003 visual basic
Merhaba Arkadaşlar,
Ben çalıştığım şirkette üretimi takip edebilmek için amatör bir barkod proğramı hazırladım fakat şöyle bir sorunum var: İşin bitiş süresinden işin başlama süresini çıkardığımda aradaki sonucu dakika cinsinden yazdırabiliyorum. Ekteki excel dosyasının giriş sayfasında bulunan M sütunu başlama süresi, N sütunu bitiş süresi, O sütunu aradaki saat farkını veriyor. Q sütununda ise bu saat farkı dakikaya çevrilebiliyor. Ancak şirkette 10:00-10:30 1. çay molası, 12:30-13:00 yemek molası ve 16:00-16:15 2. çay molası zamanlarıdır. üretim bu zamanlara denk geldiğinde bu sürelerin otomatik olarak çıkarılmasını istiyorum. Örneğin makine 09:00-11:00 arasında çalışmış ise sürenin 120 değil de 105 olarak hesaplanması gerekiyor.
Bu konu hakkında forumda çok arama yaptım ancak sadece bi konuda fonksiyon olarak değinilmiş. Benim makro koduna ihtiyacım var. Biraz kafa yoracak bir iş ama yardımcı olursanız sevinirim.
Bu orada kodların şifresi : huso84
 

Ekli dosyalar

Katılım
13 Nisan 2009
Mesajlar
5
Excel Vers. ve Dili
2003 visual basic
arkadaşlar kimsenin bir fikri yok mu yaw. Bir beyin fırtınası yapsak bari...
 
Katılım
13 Nisan 2009
Mesajlar
5
Excel Vers. ve Dili
2003 visual basic
teşekkür ederim parametre ben komple inceledim oraları zaten. Benim istediğim başka bişey ama anlatamadım sanırım. belli bir zaman aralığını otomatik olarak hesaba katılmayacak zaman olarak tanımlamak istiyorum. örneğin 10:00-10:15 gibi. Bu aralığı kapsayan bi zaman dilimi olduğunda (örneğin 09:00 da başlayan bir iş 11:00 da bittiğinde) 10:00-10:15 arası süreyi hesaba katmasın istiyorum. normalde 11:00'dan 09:00 ı cıkardığında aradaki süre 120 dk oluyor ya, yazacağım kodda o süreyi 105 olarak hesaplayacak (10:00-10:15 aralığını yok sayıp hesaba katmayacak). tekrar teşekkürler...
 
Katılım
14 Şubat 2006
Mesajlar
3,426
Excel Vers. ve Dili
(Excel 2016 - İngilizce)
Altın Üyelik Bitiş Tarihi
30-11-2022
Merhaba,

Bu konuyu zamanında ben de çok araştırmıştım.En sonunda kendim aşağıdaki gibi bir çözüm buldum.Biraz uzun oluyor ama en uygun çözüm bu sanırım...

Burada aradaki farkın dakika cinsinden süresi bulunuyor.Bu süre kadar başlangıç saatine 1'er dakika ekleyip if formülü ile her dakikanın hangi aralıkta olduğu tespit ediliyor.Dakika hangi aralıkta ise o grup ile toplanıyor.Çalışma süresi,mola,yemek,duruş vb. gibi...

Örnek olarak aşağıdaki kodları inceleyebilirsiniz.Kendi saat aralıklarınıza göre istediğiniz gibi revize yapabilirsiniz.


Kod:
[COLOR=blue]Function [/COLOR]SaatHesapla(Baslangiç_Saat As [COLOR=blue]Date[/COLOR], Bitiş_Saat As [COLOR=blue]Date[/COLOR]) As [COLOR=blue]Date[/COLOR]
    Dim FBasSaat, FBitSaat, farkd, k, i
    Dim FSure, FMola
 
    FBasSaat = [COLOR=blue]TimeSerial[/COLOR]([COLOR=blue]Hour[/COLOR](Baslangiç_Saat), [COLOR=blue]Minute[/COLOR](Baslangiç_Saat), [COLOR=blue]Second[/COLOR](Baslangiç_Saat))
    FBitSaat = [COLOR=blue]TimeSerial[/COLOR]([COLOR=blue]Hour[/COLOR](Bitiş_Saat), [COLOR=blue]Minute[/COLOR](Bitiş_Saat), [COLOR=blue]Second[/COLOR](Bitiş_Saat))
    farkd =[COLOR=blue] DateDiff[/COLOR]("n", FBasSaat, FBitSaat)
 
    FSure = "00:00:00"
    FMola = "00:00:00"
 
           For i = 1 To farkd
                k = [COLOR=blue]DateAdd[/COLOR]("n", i, FBasSaat)
                    If k >= "08:00:00" And k <= "10:00:00" Then
                        FSure = [COLOR=blue]DateAdd[/COLOR]("n", 1, FSure)
                    ElseIf k >= "10:01:00" And k <= "10:15:00" Then
                        FMola = [COLOR=blue]DateAdd[/COLOR]("n", 1, FMola)
                    ElseIf k >= "10:16:00" And k <= "12:30:00" Then
                        FSure = [COLOR=blue]DateAdd[/COLOR]("n", 1, FSure)
                    ElseIf k >= "12:31:00" And k <= "13:00:00" Then
                        FMola = [COLOR=blue]DateAdd[/COLOR]("n", 1, FMola)
                    ElseIf k >= "13:01:00" And k <= "16:00:00" Then
                        FSure = [COLOR=blue]DateAdd[/COLOR]("n", 1, FSure)
                    ElseIf k >= "16:01:00" And k <= "16:15:00" Then
                        FMola =[COLOR=blue] DateAdd[/COLOR]("n", 1, FMola)
                    ElseIf k >= "16:16:00" And k <= "18:00:00" Then
                        FSure = [COLOR=blue]DateAdd[/COLOR]("n", 1, FSure)
                    Else
                        [COLOR=blue] Exit Function[/COLOR]
                    End If
           Next i
 
    SaatHesapla = FSure
 
[COLOR=blue]End Function[/COLOR]
 

Ekli dosyalar

Katılım
13 Nisan 2009
Mesajlar
5
Excel Vers. ve Dili
2003 visual basic
teşekkür ederim recep bey ve mesudiye 052. böylece program tamamlandı. sizce nasıl oldu son hali? iş görür mü bu program? Çabalarımıza değer umarım. neyse tekrar teşekkürler...
 
Üst