Verimlilik Tablosu Destek lütfen !

avare1907

Altın Üye
Katılım
27 Ekim 2016
Mesajlar
88
Excel Vers. ve Dili
excel 2010 türkçe
Altın Üyelik Bitiş Tarihi
20-08-2026
Değerli hocalarım,
Aşağıda atölyede gün içerisinde verimliliği takip etmek için hazırlamış olduğum bir çalışma var kendi başıma bir noktaya kadar getirmeye çalıştım ancak bir noktadan sonra bazı konularda mantık hatası yapıyor beklentimi ve çıkan hataları tek tek açıklayacağım destek olmak adına değerli vaktiniziz ayırırsanız birçok kesim için çok esnek bir çalışma tamamlanmış olacaktır şimdiden teşekkür ediyorum,

öncelikle çalışma saatlerimizi yazayım çay ve yemek molalarının dışındaki süreler çevrimiçi sürelerdir,
07:30 işbaşı
10:00-10:15 arası çay molası
13:00-13:30 arası yemek molası
16:00-16:30 çay molası
17:00 paydos
07:30-17:30 arası 10 saat 10*60=600-15-30-15 =540 Dakika günlük çevrim içi net süremiz var


B ve D sütunu düşeyara formülü ile anted sayfamızdan otomatik geliyor günlük kapasitemiz parça bazlıdır değişkenlik gösterebilir x parça 2000 iken y parça 1800 olabilir

C sütununda parçanın o gün için kaç adet üretildiğini manuel olarak yazıyoruz
E sütununda günün tarihini
F sütununda o günün başlama saatini yazıyoruz
G Sütunu =EĞER(VE(E2<>"";F2<>"";C2<>"";D2<>""); PlanlananBitisAyri(E2;F2;C2;D2); "") bu formül ve arka planda çalışan kod ile G sütununa parçanın bitmesi gereken tarih ve saati aynı hücrede çıkartıyor %100 verim ile çalışılmış bir günde orayı aynı günün sonunda 05/11/2025 17:30 çıkartması gerekirken 16:30 çıkartıyor
H ile I sütunlarına ise gerçekleşen tarih ve saati manuel olarak yazıyorum
J sütunu sistemin planlanan ve bitiş saat aralığındaki süreyi buluyor 1. senaryodaki 540 dakika doğru ancak planlanan bitiş saati yanlış mola saatlerini düşmekte hata yapıyor aynı mantık K sütununda Gerçekleşen süre verisindede aşıdaki formüller ile çalışıyor

J hücresi =EĞER(VE(E2<>"";F2<>"";G2<>""); (G2 - (E2 + F2)) * 24 * 60; "")
k hücresi =EĞER(VE(E2<>"";F2<>"";H2<>"";I2<>""); ((H2 + I2) - (E2 + F2)) * 24 * 60; "")

N sütunundaki verililik değeri planlanan süre ile gerçekleşen süre arasındaki yaptığı kıyasla belirleniyor
----------------------------------------------------------------------------------------------buraya kadar 1. bölüm

2. senaryoda fazla mesai yada duruş var ise bu süreleri planlanan sürelerin içine entegre etmek
eğer bir parça günlük kapasitesi 2000 adet iken 2400 üretilmiş ise planlanan tarih saat hücresi bunu otomatik olarak bir sonraki günün tarihine ve fazla miktarı karşılayacak saati atar oraya yani %100 verimde 05/11/2025 07:30 - 05/11/2025 17:30 iken eğer fazla üretim var ise 06/11/2025 09:30 yapar, yada 2000 üretim olması gerekirken 1200 adet çıkmış o aşamada ise 05/11/2025 07:30 - 05/11/2025 14:00 olacakmış gibi planlar ne zamanki duruş yada fazla mesai L ile M sütunlarına fazla mesai yada duruş dakikası girildiğinde işler değişiyor

olması gereken eğer fazla mesai dakika hücresindeki dakika miktarı kadar süreyi işin başlangıç günü olan gün sonuna eklemesi yani 17:30 üzerine ekleyecek 19:30 yapacak eğer bu süre karşılamıyorsa bir sonraki günün 07:30'dan sonrasına aktaracak

duruş kısmında ise tam tersi yönde ilerleyecek planlanan süreyi duruş miktarı kadar + yönde ileri götürmesi gereklidir

burada önemli olan noktalar çalışma saatlerine dikkat etmesi gerekiyor yani bir ürün 14:00'da başlamış 17:30'da bitmiş ise yalnızca çevriçi olan süreye hangi mola denk geliyor 16:00'daki çay molası yani kullanılan süreden yalnızca 15 dakika çay molasını düşmesi gerekiyor çalışan kodu aşağıya ekliyor ve yanıtlarınızı sabırsızlıkla bekliyor olacağımı belirtmek isterim...saygılarımla1762492553014.png

Function PlanlananBitisAyri(BaslangicTarih As Date, BaslangicSaat As Date, UretilenAdet As Double, GunlukKapasite As Double) As Date
Const GunlukNetSure As Double = 540 ' net çalışma süresi (dakika)
Const GunlukBaslangicSaat As String = "07:30"
Const GunlukBitisSaat As String = "17:30"

If GunlukKapasite = 0 Or UretilenAdet = 0 Then
PlanlananBitisAyri = 0
Exit Function
End If

Dim ParcaDakika As Double
ParcaDakika = GunlukNetSure / GunlukKapasite ' 1 adet üretim süresi (dakika)

Dim GerekliDakika As Double
GerekliDakika = UretilenAdet * ParcaDakika

Dim BitisZaman As Date
BitisZaman = BaslangicTarih + TimeValue(BaslangicSaat)

Do While GerekliDakika > 0
Dim GunBasla As Date
Dim GunBitis As Date

GunBasla = Int(BitisZaman) + TimeValue(GunlukBaslangicSaat)
GunBitis = Int(BitisZaman) + TimeValue(GunlukBitisSaat)

If BitisZaman < GunBasla Then
BitisZaman = GunBasla
ElseIf BitisZaman >= GunBitis Then
BitisZaman = Int(BitisZaman + 1) + TimeValue(GunlukBaslangicSaat)
Else
Dim KalanGunDakika As Double
KalanGunDakika = (GunBitis - BitisZaman) * 24 * 60
' Molaları kontrol et ve çıkar
Dim MolaToplam As Double
MolaToplam = 0

If BitisZaman < Int(BitisZaman) + TimeValue("10:00") And GunBitis > Int(BitisZaman) + TimeValue("10:15") Then MolaToplam = MolaToplam + 15
If BitisZaman < Int(BitisZaman) + TimeValue("13:00") And GunBitis > Int(BitisZaman) + TimeValue("13:30") Then MolaToplam = MolaToplam + 30
If BitisZaman < Int(BitisZaman) + TimeValue("16:00") And GunBitis > Int(BitisZaman) + TimeValue("16:15") Then MolaToplam = MolaToplam + 15

KalanGunDakika = KalanGunDakika - MolaToplam

If GerekliDakika <= KalanGunDakika Then
BitisZaman = BitisZaman + TimeSerial(0, GerekliDakika, 0)
GerekliDakika = 0
Else
GerekliDakika = GerekliDakika - KalanGunDakika
BitisZaman = Int(BitisZaman + 1) + TimeValue(GunlukBaslangicSaat)
End If
End If
Loop

PlanlananBitisAyri = BitisZaman
End Function



259874
 

DoğanD

Altın Üye
Katılım
22 Eylül 2023
Mesajlar
510
Excel Vers. ve Dili
Office 365 TR
Altın Üyelik Bitiş Tarihi
05-10-2028
Merhaba,

Dosyayı eklemediğiniz için akışı tam oturtamadım kafamda fakat aşağıdaki kod dikkatimi çekti. Gün içerisinde toplam 60 Dakika mola olduğu halde siz her turda MolaToplam'ı sıfırlayıp gün sonunda son mola olan 15 dakikaya eşitliyorsunuz gibi. Bunun doğrusu kademeli olarak 15 - 45 - 60 olmalı diye düşünüyorum.

2. senaryo için de zorlasam da pek beceremedim açıkçası :) Muhakkak yardımcı olacak arkadaşlar olacaktır fakat dosyayı eklerseniz daha doğru ve hızlı bir çözüm olabilir.

Dim MolaToplam As Double
MolaToplam = 0

If BitisZaman < Int(BitisZaman) + TimeValue("10:00") And GunBitis > Int(BitisZaman) + TimeValue("10:15") Then MolaToplam = MolaToplam + 15
If BitisZaman < Int(BitisZaman) + TimeValue("13:00") And GunBitis > Int(BitisZaman) + TimeValue("13:30") Then MolaToplam = MolaToplam + 30
If BitisZaman < Int(BitisZaman) + TimeValue("16:00") And GunBitis > Int(BitisZaman) + TimeValue("16:15") Then MolaToplam = MolaToplam + 15
 

avare1907

Altın Üye
Katılım
27 Ekim 2016
Mesajlar
88
Excel Vers. ve Dili
excel 2010 türkçe
Altın Üyelik Bitiş Tarihi
20-08-2026
Merhaba,

Dosyayı eklemediğiniz için akışı tam oturtamadım kafamda fakat aşağıdaki kod dikkatimi çekti. Gün içerisinde toplam 60 Dakika mola olduğu halde siz her turda MolaToplam'ı sıfırlayıp gün sonunda son mola olan 15 dakikaya eşitliyorsunuz gibi. Bunun doğrusu kademeli olarak 15 - 45 - 60 olmalı diye düşünüyorum.

2. senaryo için de zorlasam da pek beceremedim açıkçası :) Muhakkak yardımcı olacak arkadaşlar olacaktır fakat dosyayı eklerseniz daha doğru ve hızlı bir çözüm olabilir.

Dim MolaToplam As Double
MolaToplam = 0

If BitisZaman < Int(BitisZaman) + TimeValue("10:00") And GunBitis > Int(BitisZaman) + TimeValue("10:15") Then MolaToplam = MolaToplam + 15
If BitisZaman < Int(BitisZaman) + TimeValue("13:00") And GunBitis > Int(BitisZaman) + TimeValue("13:30") Then MolaToplam = MolaToplam + 30
If BitisZaman < Int(BitisZaman) + TimeValue("16:00") And GunBitis > Int(BitisZaman) + TimeValue("16:15") Then MolaToplam = MolaToplam + 15
merhaba,

öncelikle yanıtınız için teşekkür ederim, dosyayı burada paylaşmak istemedim dosyanın içinde farklı çalışmalarda farklı formlar beraberinde imalat bilgileri müşteri bilgileri vs. var şirket menfaatleri nedeniyle yüklemek istemedim alternatif ne yapılabilir bilemedim bu doysa üzerinde 2 aydır çalışıyorum zaman buldukça belli bir seviyeye ulaştık ancak bazı mantık hataları ile başa çıkamıyorum artık...
 
Üst