Yemek Takip

Katılım
23 Aralık 2009
Mesajlar
31
Excel Vers. ve Dili
2016
Arkadaşlar kolay gelsin; 4 vardiya halinde (A-B-C ve Gündüz) çalışan 2000 civarında personelim var. Bunlar için yemek takip çizelgesi yapıyorum.
Personel görevdeyken vardiyasına göre yemek kesintisi yapılıyor ama izne çıkınca-istirahat alınca yemek kesilmemesi lazım.
izin tarihlerini de tuttuğumuz ayrı bir listemiz var.
İstediğim şu; izin listesindeki verileri yemek çizelgesine aktardığımda izin süresinde bu aydan kaç gün varsa vardiyasına göre ona göre kesinti yapılsın. bir önceki aya ait veya gelecek aya sarkan günleri hesaplamasın

Eğer personel izindeyse o günün yemeği kesilmesin.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba
1. Kullandığınız (gerçek veri içermeyen) dosyanızı paylaşır mısınız?
2. Tabloya Y ve R harflerini uygun tarihlere mi işleyeceğiz? Asıl sorunuz bu mudur?
3. Yoksa mesai tablosu + D ve E sütunundaki izin tarihleri baz alınarak Y ve R harfleri konulmadan diret AK-AL-AM sütunlarını mı hesaplamak?
 
Katılım
23 Aralık 2009
Mesajlar
31
Excel Vers. ve Dili
2016
Merhaba
1. Kullandığınız (gerçek veri içermeyen) dosyanızı paylaşır mısınız?
2. Tabloya Y ve R harflerini uygun tarihlere mi işleyeceğiz? Asıl sorunuz bu mudur?
3. Yoksa mesai tablosu + D ve E sütunundaki izin tarihleri baz alınarak Y ve R harfleri konulmadan diret AK-AL-AM sütunlarını mı hesaplamak?
@ÖmerFaruk hocam, örnek dosya linkini aşağıya bırakıyorum, asıl istediğim D ve E sütunundaki tarihleri baz alarak Y veya R harflerini uygun tarihlere işlemek.
Puantaj2.xlsx - 14 KB
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Merhaba
Aşağıdaki kodları VBA ksımında bir modüle içine ekleyin.
Sayfa üzerinde arzuladığınız bir şekilde kodları tetikleyebilirsiniz.

Not: F2 hücrenizin formatını Metin olarak değil, Tarih - İsteğe Uyarlanmış - aaaa yyyy olarak değiştirin ve 1.1.2022 olarak girin.

C++:
Sub izinler()
    Dim Son As Integer, i As Integer, k As Integer, Tarih As Double, Veri As Variant, Liste
    Son = Range("A" & Rows.Count).End(3).Row
    Range("F5").Resize(Son - 4, 31).Replace "Y", ""
    Range("F5").Resize(Son - 4, 31).Replace "R", ""
    Veri = Range("F5").Resize(Son - 4, 31).Value
    Tarih = CDbl(Range("F2"))
    For i = 5 To Son
        ReDim Liste(1 To 1, 1 To DateAdd("m", 1, Tarih) - Tarih)
        For k = 1 To Day(DateAdd("m", 1, Tarih) - 1)
            If Tarih + k - 1 >= Range("D" & i) And Tarih + k - 1 < Range("E" & i) Then
                Liste(1, k) = Left(Range("C" & i), 1)
            Else
                Liste(1, k) = Veri(i - 4, k)
            End If
        Next k
        Range("F" & i).Resize(1, k - 1) = Liste
    Next
End Sub
 
Katılım
23 Aralık 2009
Mesajlar
31
Excel Vers. ve Dili
2016
Merhaba
Aşağıdaki kodları VBA ksımında bir modüle içine ekleyin.
Sayfa üzerinde arzuladığınız bir şekilde kodları tetikleyebilirsiniz.

Not: F2 hücrenizin formatını Metin olarak değil, Tarih - İsteğe Uyarlanmış - aaaa yyyy olarak değiştirin ve 1.1.2022 olarak girin.

C++:
Sub izinler()
    Dim Son As Integer, i As Integer, k As Integer, Tarih As Double, Veri As Variant, Liste
    Son = Range("A" & Rows.Count).End(3).Row
    Range("F5").Resize(Son - 4, 31).Replace "Y", ""
    Range("F5").Resize(Son - 4, 31).Replace "R", ""
    Veri = Range("F5").Resize(Son - 4, 31).Value
    Tarih = CDbl(Range("F2"))
    For i = 5 To Son
        ReDim Liste(1 To 1, 1 To DateAdd("m", 1, Tarih) - Tarih)
        For k = 1 To Day(DateAdd("m", 1, Tarih) - 1)
            If Tarih + k - 1 >= Range("D" & i) And Tarih + k - 1 < Range("E" & i) Then
                Liste(1, k) = Left(Range("C" & i), 1)
            Else
                Liste(1, k) = Veri(i - 4, k)
            End If
        Next k
        Range("F" & i).Resize(1, k - 1) = Liste
    Next
End Sub
Çok teşekkür ederim @ÖmerFaruk hocam. Elinize, emeğinize sağlık.
 
Üst