Giriş-Çıkış Saatine Göre Mesai Hesaplama

ozanyakar

Altın Üye
Katılım
19 Temmuz 2010
Mesajlar
158
Excel Vers. ve Dili
Microsoft Excel 2010_64 Bit
Altın Üyelik Bitiş Tarihi
02-01-2029
Merhaba, sitede puantaj ile ilgili birçok örnek araştırdım. Ancak tam olarak istediğimi bulamadım. Yapmak istediğim şu ;

Excel tablosunda alt alta personeller var, 1,2,3.....31 ayın günleri var. Bu günlerin her birinde her gün için, 2 şer veri var, biri giriş saati, diğeri çıkış saati. Girmiş olduğum bu giriş çıkış saatlerine göre personel kaç saat çalışmış nasıl hesaplarım ? ( Personel bazında ayrı ayrı )
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Ali Veli'nin çalışma saat toplamı
=8+8+24+14+7+19=80 etmesi gerekmiyor mu?
 

ozanyakar

Altın Üye
Katılım
19 Temmuz 2010
Mesajlar
158
Excel Vers. ve Dili
Microsoft Excel 2010_64 Bit
Altın Üyelik Bitiş Tarihi
02-01-2029
Evet Ömer Bey, pardon ben toplarken , =8+8+12+19+7,8+19...olarak toplamışım. Formül ile nasıl ulaşırız, toplama?
 

denese

Altın Üye
Katılım
17 Mart 2011
Mesajlar
441
Excel Vers. ve Dili
Office 2019
Altın Üyelik Bitiş Tarihi
02-03-2026
Merhaba, sitede puantaj ile ilgili birçok örnek araştırdım. Ancak tam olarak istediğimi bulamadım. Yapmak istediğim şu ;

Excel tablosunda alt alta personeller var, 1,2,3.....31 ayın günleri var. Bu günlerin her birinde her gün için, 2 şer veri var, biri giriş saati, diğeri çıkış saati. Girmiş olduğum bu giriş çıkış saatlerine göre personel kaç saat çalışmış nasıl hesaplarım ? ( Personel bazında ayrı ayrı )
Ekteki dosyayı kendinize uyarlayabilirsiniz.
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Formülle biir hayli kastı
Sayfanızda bir buton oluşturup aşağıdaki kodları çalıştırabilirsin.

C++:
Sub MesaiHesapla()
Application.ScreenUpdating = False
For i = 4 To Range("A" & Rows.Count).End(3).Row
    Zaman = 0
    For k = 3 To Cells(1, Columns.Count).End(1).Column + 1
        If Cells(3, k) = "G.S." And Cells(i, k) <> "" Then
            ilk = CDbl(Cells(1, k)) + CDbl(Cells(i, k))
        End If
        If Cells(3, k) = "Ç.S." And Cells(i, k) <> "" Then
            son = CDbl(Cells(1, k - 1)) + CDbl(Cells(i, k))
            If son < ilk Then son = son + 1
        End If
        If ilk > 0 And son > 0 Then
            Zaman = Zaman + son - ilk
            son = 0: ilk = 0
        End If
    Next k
    Range("X" & i) = Zaman * 24
    Range("X" & i).NumberFormat = "00.00"
Next i
Application.ScreenUpdating = True
End Sub
 

Ekli dosyalar

ozanyakar

Altın Üye
Katılım
19 Temmuz 2010
Mesajlar
158
Excel Vers. ve Dili
Microsoft Excel 2010_64 Bit
Altın Üyelik Bitiş Tarihi
02-01-2029
Formülle biir hayli kastı
Sayfanızda bir buton oluşturup aşağıdaki kodları çalıştırabilirsin.

C++:
Sub MesaiHesapla()
Application.ScreenUpdating = False
For i = 4 To Range("A" & Rows.Count).End(3).Row
    Zaman = 0
    For k = 3 To Cells(1, Columns.Count).End(1).Column + 1
        If Cells(3, k) = "G.S." And Cells(i, k) <> "" Then
            ilk = CDbl(Cells(1, k)) + CDbl(Cells(i, k))
        End If
        If Cells(3, k) = "Ç.S." And Cells(i, k) <> "" Then
            son = CDbl(Cells(1, k - 1)) + CDbl(Cells(i, k))
            If son < ilk Then son = son + 1
        End If
        If ilk > 0 And son > 0 Then
            Zaman = Zaman + son - ilk
            son = 0: ilk = 0
        End If
    Next k
    Range("X" & i) = Zaman * 24
    Range("X" & i).NumberFormat = "00.00"
Next i
Application.ScreenUpdating = True
End Sub

Sayın Ömer Faruk, emeğiniz ve ilginiz için teşekkür ederim. Makroyu başarılı bir şekilde çalıştırdım problem yok. Sürekli kullanacağım bir tablo. Ancak makro bilmediğim için olası bir hata da müdahale edemem. Örneğin tablodaki verileri arttırdığımda, yeni satır ve sütun eklediğimde makroyu çalıştıramadım. Formül ile çözebilseydim benim için daha iyi olurdu. Vakit ayırdınız çok teşekkür ederim. Saygılar sunarım.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Gönderdiğiniz tabloda isimler 4. satırdan başlıyordu.
Aşağıya doğru istediğiniz kadar isim ekleyebilirsiniz.

Sütunlar C den başlıyordu ve V ye kadar devam ediyordu.
Sağa doğru istediğiniz kadar tarih ilave edbilir 2.ve3.satırlara veri girebilirsiniz. Haliyle eklediğiniz her isim için de 4.satır ve devamına da

Yapmanız gerekenler
1. Oluşturduğum butonu mesela A1 hücresine kaydırın
2. Sonuçları yazdığımız X sütunu yerine aşağıdaki kodu kullanın

C++:
'Bu iki satır yerine
Range("X" & i) = Zaman * 24
Range("X" & i).NumberFormat = "00.00"

'Bu iki satırı kullanın
Cells(i,k+1) = Zaman * 24
Cells(i,k+1) .NumberFormat = "00.00"
 

ozanyakar

Altın Üye
Katılım
19 Temmuz 2010
Mesajlar
158
Excel Vers. ve Dili
Microsoft Excel 2010_64 Bit
Altın Üyelik Bitiş Tarihi
02-01-2029
Gönderdiğiniz tabloda isimler 4. satırdan başlıyordu.
Aşağıya doğru istediğiniz kadar isim ekleyebilirsiniz.

Sütunlar C den başlıyordu ve V ye kadar devam ediyordu.
Sağa doğru istediğiniz kadar tarih ilave edbilir 2.ve3.satırlara veri girebilirsiniz. Haliyle eklediğiniz her isim için de 4.satır ve devamına da

Yapmanız gerekenler
1. Oluşturduğum butonu mesela A1 hücresine kaydırın
2. Sonuçları yazdığımız X sütunu yerine aşağıdaki kodu kullanın

C++:
'Bu iki satır yerine
Range("X" & i) = Zaman * 24
Range("X" & i).NumberFormat = "00.00"

'Bu iki satırı kullanın
Cells(i,k+1) = Zaman * 24
Cells(i,k+1) .NumberFormat = "00.00"
Sub MesaiHesapla()
Application.ScreenUpdating = False
For i = 4 To Range("A" & Rows.Count).End(3).Row
Zaman = 0
For k = 3 To Cells(1, Columns.Count).End(1).Column + 1
If Cells(3, k) = "G.S." And Cells(i, k) <> "" Then
ilk = CDbl(Cells(1, k)) + CDbl(Cells(i, k))
End If
If Cells(3, k) = "Ç.S." And Cells(i, k) <> "" Then
son = CDbl(Cells(1, k - 1)) + CDbl(Cells(i, k))
If son < ilk Then son = son + 1
End If
If ilk > 0 And son > 0 Then
Zaman = Zaman + son - ilk
son = 0: ilk = 0
End If
Next k
Cells(i, k + 1) = Zaman * 24
Cells(i, k + 1).NumberFormat = "00.00"
Next i
Application.ScreenUpdating = True
End Sub

Hocam, makroda belirttiğiniz alanları değiştirdim çalıştı.
Ancak ; yeni eklediğim sütuna yani saat yazdığım yerin üzerine toplam alıyor. O toplam aldığı alan makroda hangi veri, sağa kaydırmam lazım onu. Nasıl yapabiliriz?
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Gönderdiğim dosyada kodlar Module1 içindeydi.
Siz sayfanın kod kısmına yeniden kod yazmışınız.
Ancak butona basınca moduldeki kodlar çalışıyor.
Haliyle gerekli değişikliği module1 içinde yapın. Sayfanın kod sayfasına eklediklerinizi silebilirsiniz.
 

ozanyakar

Altın Üye
Katılım
19 Temmuz 2010
Mesajlar
158
Excel Vers. ve Dili
Microsoft Excel 2010_64 Bit
Altın Üyelik Bitiş Tarihi
02-01-2029
Gönderdiğim dosyada kodlar Module1 içindeydi.
Siz sayfanın kod kısmına yeniden kod yazmışınız.
Ancak butona basınca moduldeki kodlar çalışıyor.
Haliyle gerekli değişikliği module1 içinde yapın. Sayfanın kod sayfasına eklediklerinizi silebilirsiniz.
Hocam hiçbir sorun yok süper oldu. Sanıyorum sütunların bittiği yerden bir boşluk bırak toplamı orada al şeklinde bir kod yazdınız. Ne kadar sütun eklesem de bir boşluk bırakıp hemen yanına toplam alıyor. Harika oldu, üstelik sayı formatında. Çok teşekkür ederim, ellerinize sağlık. Adana dan saygılar.
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Eyvallah
 
Üst