Soru Mesai Hesaplama

Katılım
8 Temmuz 2020
Mesajlar
35
Excel Vers. ve Dili
2006 sürüm Türkçe
İlk öncelik ile konuyu okuyan ve destek olan olmayan tüm arkadaşlara teşekkür ederim.
Excelde her ay yapmak istediğim şey personelin 0,5 saatlik mesaisini onaylatmam gerekiyor bunun içinde her ay tek tek personelin çalıştığı tarihleri saatleri ve bayramları belirtecek şekilde tek tek sayfa haline getirip çıktı alıp onaylatıyorum. Bunu yaparken makro veya daha farklı bir yöntem ile yapabilmem mümkün mü. Sadece çalıştığı günleri mesela Raporlu olduğu senelik izin sosyal izin veya F (08:00-18:00) çalıştığı günleri listelemesini istemiyorum. Diğer günleri saatleri ve tarihleri sicil no statüsü bunların otomatik bir şekilde olmasını nasıl sağlarım.

 

DoğanD

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

Aşağıdaki kodu boş bir modüle ekledikten sonra buton yardımı ile kullanabilirsiniz. İhtiyaçlarınızı doğru anladıysam işinize yarayacaktır.

Vardiya Listesi sayfasında Personel adına tıkladıktan sonra makroyu çalıştırırsanız listeyi o personelin bilgilerine göre güncelleyecektir.


Kod:
Sub Deneme()
If ActiveCell.Column <> 3 Or ActiveCell.Value = "" Or ActiveCell.Value = "ADI VE SOYADI" Then Exit Sub
Application.ScreenUpdating = False
Dim i, dd, secim, y, ayy, yill As Integer
Dim mekan As String
Sayfa2.Range("A6:M36").ClearContents
ayy = Val(InputBox("Ay Seçin", "", Month(Date)))
yill = Val(InputBox("Yıl Girin", "", Year(Date)))
If ayy > 12 Or ayy < 0 Then Exit Sub
dd = 6
secim = ActiveCell.Row
If secim < 18 Then
mekan = "Kavaklıdere İçme Suyu Arıtma Tesisinin "
    Else
    If secim < 26 Then
        mekan = "Çambel Pompa İstasyonunun "
        Else
            mekan = "Karaçam İçme Suyu Arıtma Tesisinin"
    End If
End If
For i = 4 To 34
If Sayfa1.Cells(secim, i) = "C" Or Sayfa1.Cells(secim, i) = "D" Or Sayfa1.Cells(secim, i) = "E" Then
Sayfa2.Cells(dd, 1) = Sayfa1.Cells(secim, 2)
Sayfa2.Cells(dd, 2) = Sayfa1.Cells(secim, 1)
Sayfa2.Cells(dd, 3) = Sayfa1.Cells(secim, 3)
Sayfa2.Cells(dd, 4) = "Teknisyen"
Sayfa2.Cells(dd, 5).Formula = "=DATE(" & yill & "," & ayy & "," & i - 3 & ")"
Sayfa2.Cells(dd, 6) = Format(WorksheetFunction.VLookup(Sayfa1.Cells(secim, i), Sayfa1.Range("AJ:AM"), 3, 0), "HH:MM") & " - " & Format(WorksheetFunction.VLookup(Sayfa1.Cells(secim, i), Sayfa1.Range("AJ:AM"), 4, 0), "HH:MM")
Sayfa2.Cells(dd, 7) = "Fazla Mesai"
Sayfa2.Cells(dd, 8) = ""
Sayfa2.Cells(dd, 9) = "0,5 saat"
Sayfa2.Cells(dd, 10) = mekan & " kesintisiz işletilmesinde vardiya personeli olarak görev yapmaktadır."
dd = dd + 1
End If
Next i
Sayfa2.Select
    Cells.Select
    Selection.EntireRow.Hidden = False
For y = 6 To 36
If Sayfa2.Cells(y, 3) = "" Then
Sayfa2.Rows(y).Select
Selection.EntireRow.Hidden = True
End If
Next y
Application.ScreenUpdating = True
End Sub
 
Katılım
8 Temmuz 2020
Mesajlar
35
Excel Vers. ve Dili
2006 sürüm Türkçe
Merhaba,

Aşağıdaki kodu boş bir modüle ekledikten sonra buton yardımı ile kullanabilirsiniz. İhtiyaçlarınızı doğru anladıysam işinize yarayacaktır.

Vardiya Listesi sayfasında Personel adına tıkladıktan sonra makroyu çalıştırırsanız listeyi o personelin bilgilerine göre güncelleyecektir.


Kod:
Sub Deneme()
If ActiveCell.Column <> 3 Or ActiveCell.Value = "" Or ActiveCell.Value = "ADI VE SOYADI" Then Exit Sub
Application.ScreenUpdating = False
Dim i, dd, secim, y, ayy, yill As Integer
Dim mekan As String
Sayfa2.Range("A6:M36").ClearContents
ayy = Val(InputBox("Ay Seçin", "", Month(Date)))
yill = Val(InputBox("Yıl Girin", "", Year(Date)))
If ayy > 12 Or ayy < 0 Then Exit Sub
dd = 6
secim = ActiveCell.Row
If secim < 18 Then
mekan = "Kavaklıdere İçme Suyu Arıtma Tesisinin "
    Else
    If secim < 26 Then
        mekan = "Çambel Pompa İstasyonunun "
        Else
            mekan = "Karaçam İçme Suyu Arıtma Tesisinin"
    End If
End If
For i = 4 To 34
If Sayfa1.Cells(secim, i) = "C" Or Sayfa1.Cells(secim, i) = "D" Or Sayfa1.Cells(secim, i) = "E" Then
Sayfa2.Cells(dd, 1) = Sayfa1.Cells(secim, 2)
Sayfa2.Cells(dd, 2) = Sayfa1.Cells(secim, 1)
Sayfa2.Cells(dd, 3) = Sayfa1.Cells(secim, 3)
Sayfa2.Cells(dd, 4) = "Teknisyen"
Sayfa2.Cells(dd, 5).Formula = "=DATE(" & yill & "," & ayy & "," & i - 3 & ")"
Sayfa2.Cells(dd, 6) = Format(WorksheetFunction.VLookup(Sayfa1.Cells(secim, i), Sayfa1.Range("AJ:AM"), 3, 0), "HH:MM") & " - " & Format(WorksheetFunction.VLookup(Sayfa1.Cells(secim, i), Sayfa1.Range("AJ:AM"), 4, 0), "HH:MM")
Sayfa2.Cells(dd, 7) = "Fazla Mesai"
Sayfa2.Cells(dd, 8) = ""
Sayfa2.Cells(dd, 9) = "0,5 saat"
Sayfa2.Cells(dd, 10) = mekan & " kesintisiz işletilmesinde vardiya personeli olarak görev yapmaktadır."
dd = dd + 1
End If
Next i
Sayfa2.Select
    Cells.Select
    Selection.EntireRow.Hidden = False
For y = 6 To 36
If Sayfa2.Cells(y, 3) = "" Then
Sayfa2.Rows(y).Select
Selection.EntireRow.Hidden = True
End If
Next y
Application.ScreenUpdating = True
End Sub
Evet işlemlerin hepsi doğru.
Benim istediğim ise tüm personelleri tesis isimleri ile yeni Excel oluşturup ikinci sayfadaki formatta kaydetmesi. Aylık olarak verileri saklamam gerekiyor mesela Ekim Kavaklıdere , Ekim Çambel Pompa İstasyonu, Ekim Karaçam diğer ay ise Kasım Kavaklıdere gibi yeni Excel açıp tüm personelleri oluşturması.
 
Katılım
8 Temmuz 2020
Mesajlar
35
Excel Vers. ve Dili
2006 sürüm Türkçe
Evet işlemlerin hepsi doğru.
Benim istediğim ise tüm personelleri tesis isimleri ile yeni Excel oluşturup ikinci sayfadaki formatta kaydetmesi. Aylık olarak verileri saklamam gerekiyor mesela Ekim Kavaklıdere , Ekim Çambel Pompa İstasyonu, Ekim Karaçam diğer ay ise Kasım Kavaklıdere gibi yeni Excel açıp tüm personelleri oluşturması.
Bazı personeller ise mesela tekniker. Bayram Günlerinde Bayram Fazla Mesai yazması gerek.


Çalışmanın Son Hali
 
Son düzenleme:
Katılım
8 Temmuz 2020
Mesajlar
35
Excel Vers. ve Dili
2006 sürüm Türkçe
Konu ve sorun güncel sonuca ulaşamadım.
 
Üst