- Katılım
- 10 Haziran 2011
- Mesajlar
- 24
- Excel Vers. ve Dili
- Microsoft Office Professional Plus 2019 Türkçe
Merhaba Arkadaşlar, benim acil yardıma ihtiyacım var.
Birkaç yıl önce bu siteden bir arkadaşın yardımı ile Excel'de bir üretim planı oluşturmuştuk. İş yerinde çalışma saatleri değiştiği için bu kodlar da değişiklik yapmam gerekiyor fakat kod bilgim olmadığı için yapamıyorum.
Sistem şu şekilde çalışıyor.
Şirketimizde işin durumuna göre 3 faklı şekilde çalışabiliyoruz. Bu çalışmalar aşağıdaki şekilde belirtilmiştir.
Vardiya durumuna göre belirtilen hücreye 1 yazdığımda birinci seçeneğe göre, hücreye 2 yazdığımda ikinci seçeneğe göre, 3 yazdığımda üçüncü seçeneğe göre işin süresini hesaplayıp bitiş tarihini ve saatini çıkarıyor.
Aşağıdaki kodlar ve sistem sorunsuz çalışıyor fakat dediğim gibi çalışma saatlerimiz 2. ve 3. seçeneklerde değiştiği için sorun yaşıyorum.
Yardımcı olabilecek bir arkadaş varsa gerçekten çok memnun olurum.
Yeni çalışma saatlerimiz şu şekilde;
1- (24 saat çalışma) Pazartesi sabah 08.00 dan Cumartesi akşamı 20.00 a kadar kesintisiz çalışma (BUNDA HERHANGİ BİR DEĞİŞİKLİK YOK)
2- (Vardiyalı Mesaisiz çalışma) Hafta içi sabah 08.00 dan gece 00.00 'a kadar (16 saat - Cumartesi Pazar tatil) - (ESKİDEN SABAH 08:00 - GECE 00.30 ARASI 16,5 SAAT VE CUMARTESİ 13.00 'A KADARDI. BURADA HAFTA İÇİ YARIM SAAT AZALMA OLACAK VE CUMARTESİ KALDIRILACAK)
3- (Normal çalışma) Hafta içi sabah 08.00 dan akşam 18.00 'a kadar (10 saat - Cumartesi Pazar tatil) - (ESKİDEN 08:00 - 18.00 ARASI VE CUMARTESİ 13.00 A KADARDI. BURADA DA CUMARTESİ GÜNÜ KALDIRILACAK)
Değişecek kodlar da şu şekilde;
Function saat_bul(bas As Date, plan As Double, vard As Byte)
On Error GoTo son
saat = plan * 2
bit = bas
If vard = 1 Then
GoTo 1
ElseIf vard = 2 Then
GoTo 2
Else
GoTo 3
End If
1:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 And Format(bit, "hh:nn") >= "20:00" Then
i = i - 1
ElseIf Weekday(bit, vbMonday) = 7 And Format(bit, "hh:nn") >= "00:00" Then
i = i - 1
ElseIf Weekday(bit, vbMonday) = 1 And Format(bit, "hh:nn") < "08:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
2:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 Then 'cumartesi
If Format(bit, "hh:nn") > "00:30" Then
If Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "13:00" Then
i = i - 1
End If
End If
' i = i - 1
ElseIf Weekday(bit, vbMonday) = 7 Then 'pazar
i = i - 1
ElseIf Weekday(bit, vbMonday) = 1 Then
If Format(bit, "hh:nn") >= "00:00" And Format(bit, "hh:nn") <= "08:00" Then
i = i - 1
End If
ElseIf Format(bit, "hh:nn") >= "00:30" And Format(bit, "hh:nn") < "08:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
3:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 Then ' cumartesi
If Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "13:00" Then
i = i - 1
End If
ElseIf Weekday(bit, vbMonday) = 7 Then 'pazar
i = i - 1
ElseIf Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "18:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
son:
End Function
Birkaç yıl önce bu siteden bir arkadaşın yardımı ile Excel'de bir üretim planı oluşturmuştuk. İş yerinde çalışma saatleri değiştiği için bu kodlar da değişiklik yapmam gerekiyor fakat kod bilgim olmadığı için yapamıyorum.
Sistem şu şekilde çalışıyor.
Şirketimizde işin durumuna göre 3 faklı şekilde çalışabiliyoruz. Bu çalışmalar aşağıdaki şekilde belirtilmiştir.
Vardiya durumuna göre belirtilen hücreye 1 yazdığımda birinci seçeneğe göre, hücreye 2 yazdığımda ikinci seçeneğe göre, 3 yazdığımda üçüncü seçeneğe göre işin süresini hesaplayıp bitiş tarihini ve saatini çıkarıyor.
Aşağıdaki kodlar ve sistem sorunsuz çalışıyor fakat dediğim gibi çalışma saatlerimiz 2. ve 3. seçeneklerde değiştiği için sorun yaşıyorum.
Yardımcı olabilecek bir arkadaş varsa gerçekten çok memnun olurum.
Yeni çalışma saatlerimiz şu şekilde;
1- (24 saat çalışma) Pazartesi sabah 08.00 dan Cumartesi akşamı 20.00 a kadar kesintisiz çalışma (BUNDA HERHANGİ BİR DEĞİŞİKLİK YOK)
2- (Vardiyalı Mesaisiz çalışma) Hafta içi sabah 08.00 dan gece 00.00 'a kadar (16 saat - Cumartesi Pazar tatil) - (ESKİDEN SABAH 08:00 - GECE 00.30 ARASI 16,5 SAAT VE CUMARTESİ 13.00 'A KADARDI. BURADA HAFTA İÇİ YARIM SAAT AZALMA OLACAK VE CUMARTESİ KALDIRILACAK)
3- (Normal çalışma) Hafta içi sabah 08.00 dan akşam 18.00 'a kadar (10 saat - Cumartesi Pazar tatil) - (ESKİDEN 08:00 - 18.00 ARASI VE CUMARTESİ 13.00 A KADARDI. BURADA DA CUMARTESİ GÜNÜ KALDIRILACAK)
Değişecek kodlar da şu şekilde;
Function saat_bul(bas As Date, plan As Double, vard As Byte)
On Error GoTo son
saat = plan * 2
bit = bas
If vard = 1 Then
GoTo 1
ElseIf vard = 2 Then
GoTo 2
Else
GoTo 3
End If
1:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 And Format(bit, "hh:nn") >= "20:00" Then
i = i - 1
ElseIf Weekday(bit, vbMonday) = 7 And Format(bit, "hh:nn") >= "00:00" Then
i = i - 1
ElseIf Weekday(bit, vbMonday) = 1 And Format(bit, "hh:nn") < "08:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
2:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 Then 'cumartesi
If Format(bit, "hh:nn") > "00:30" Then
If Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "13:00" Then
i = i - 1
End If
End If
' i = i - 1
ElseIf Weekday(bit, vbMonday) = 7 Then 'pazar
i = i - 1
ElseIf Weekday(bit, vbMonday) = 1 Then
If Format(bit, "hh:nn") >= "00:00" And Format(bit, "hh:nn") <= "08:00" Then
i = i - 1
End If
ElseIf Format(bit, "hh:nn") >= "00:30" And Format(bit, "hh:nn") < "08:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
3:
For i = 1 To saat
bit = bit + CDate(Format("00:30", "hh:nn"))
If Weekday(bit, vbMonday) = 6 Then ' cumartesi
If Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "13:00" Then
i = i - 1
End If
ElseIf Weekday(bit, vbMonday) = 7 Then 'pazar
i = i - 1
ElseIf Format(bit, "hh:nn") < "08:00" Or Format(bit, "hh:nn") >= "18:00" Then
i = i - 1
End If
Next i
saat_bul = Format(bit, "dd/mm/yyyy hh:nn")
GoTo son
son:
End Function