Excell Yıllık İzin Blok Kullanımı Hesaplama

Katılım
28 Mayıs 2019
Mesajlar
1
Excel Vers. ve Dili
excell
Merhaba

Aşağıdaki gibi bir veri var
İstediğim aşağıdaki xxx sicilinin toplam yıllık izin kullanımı 12 gün ancak 10 gün aralıksız kullanıp kullanmadığını nasıl formüle ederim.
2850 kişiyi bu şekilde kontrol etmem gerekiyor.

SİCİL

ADI SOYADI

12.08.2024

13.08.2024

14.08.2024

15.08.2024

16.08.2024

17.08.2024

18.08.2024

19.08.2024

20.08.2024

21.08.2024

22.08.2024

23.08.2024

24.08.2024

25.08.2024

26.08.2024

27.08.2024

28.08.2024

29.08.2024

30.08.2024

31.08.2024

KULLANILAN İZİN

XXX

AAAXXX BBBXXX

07:30 - 16:00

07:30 - 16:00

Y.İ.

Y.İ.

OFF

07:30 - 16:00

15:30 - 00:00

OFF

Y.İ.

Y.İ.

Y.İ.

Y.İ.

Y.İ.

Y.İ.

OFF

Y.İ.

Y.İ.

Y.İ.

OFF

Y.İ.

12

 
Katılım
6 Kasım 2004
Mesajlar
213
Excel Vers. ve Dili
Excel 2016
Türkçe 64 BIT
Altın Üyelik Bitiş Tarihi
25-07-2023
Merhaba,
Aşağıdaki makro ile kontrol edebilirsiniz.
Kod:
Sub KontrolEt()
    Dim ws As Worksheet
    Dim sonSatir As Long
    Dim i As Long, j As Long
    Dim izinSayisi As Integer
    Dim sicil As String
    Dim sonucSutun As Long
    
    ' Sayfayı tanımla
    Set ws = ThisWorkbook.Sheets("Sayfa1")
    
    ' Son satırı bul
    sonSatir = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
    
    ' Sonuç sütunu X (24. sütun olarak güncelledim)
    sonucSutun = 24 ' X sütunu 24. sütundur
    ws.Range(ws.Cells(2, sonucSutun), ws.Cells(sonSatir, sonucSutun)).ClearContents ' X sütununu temizle
    
    ' Tüm satırları kontrol et
    For i = 2 To sonSatir
        izinSayisi = 0
        sicil = ws.Cells(i, 1).Value ' Sicil sütunu (A) alındı
        
        ' Arka arkaya Y.İ. kontrolü
        For j = 3 To ws.Cells(i, ws.Columns.Count).End(xlToLeft).Column
            If ws.Cells(i, j).Value = "Y.İ." Then
                izinSayisi = izinSayisi + 1
            Else
                izinSayisi = 0
            End If
            
            ' Eğer 10 gün aralıksız Y.İ. varsa
            If izinSayisi >= 10 Then
                ws.Cells(i, sonucSutun).Value = "Evet"
                Exit For
            End If
        Next j
        
        ' Eğer 10 gün aralıksız yoksa "Hayır" yaz
        If ws.Cells(i, sonucSutun).Value = "" Then
            ws.Cells(i, sonucSutun).Value = "Hayır"
        End If
    Next i
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,153
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Merhaba,

Formülle alternatif..

Gerekiyorsa formülü kullandığınız ofis diline çevirirsiniz.

C++:
=MAX(FREQUENCY(IF(C2:V2="Y.İ.";COLUMN(C2:V2);IF((C2:V2="OFF")*(C2:V2="Y.İ.");COLUMN(C2:V2)));IF((C2:V2<>"Y.İ.")*(C2:V2<>"OFF");COLUMN(C2:V2))))
 
Üst