iki tarih arasında olmayan günleri raporlama

Katılım
11 Haziran 2008
Mesajlar
121
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
27-09-2022
Merhaba Arkadaşlar,
Excel tablosunda Personel İsmi ve Tarih bilgileri var.
A1 ve B1 yazan tarih aralığında kayıt girilmemiş tarihleri personel bazında nasıl farklı sayfaya raporlarım.

Aşağıda ki örneğe göre Veli BABA 02/01/2020 bulmak istiyorum.
Ali ASLAN 01/01/2020
Veli BABA 01/01/2020
Ali ASLAN 02/01/2020
Ali ASLAN 03/01/2020
Veli BABA 03/01/2020

Teşekkürler
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba

Küçük bir örnek dosya ekler misiniz. Birde tüm personel isimlerini arayacağımız bir yer var mı? Yoksa sadece listelenen personellere göre mi işlem yapacağız.

 
Katılım
11 Haziran 2008
Mesajlar
121
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
27-09-2022
Listenen kayıta ilk ve son tarihler arasında atlayan günleri bulmak istiyorum.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Deneyiniz. Sayfa1 de olmayan günleri istediğiniz gibi Sayfa2 ye listeler.
Kod:
Sub bul_listele()
  
    Dim S1 As Worksheet, S2 As Worksheet, mn As Date, mk As Date, i As Long
    Dim dizi(), deg, s, k, a As Long, d As Object, sat As Long, j As Long
      
    Set S1 = Sheets("Sayfa1")
    Set S2 = Sheets("Sayfa2")
    Set d = CreateObject("Scripting.Dictionary")
  
    Application.ScreenUpdating = False
    mn = Application.Min(S1.[B:B])
    mk = Application.Max(S1.[B:B])
  
    For i = 2 To S1.Cells(Rows.Count, "A").End(xlUp).Row
        deg = S1.Cells(i, "A")
        ReDim Preserve dizi(a)
        dizi(a) = deg & "|" & S1.Cells(i, "B")
        a = a + 1
        If Not d.exists(deg) Then
            d.Add deg, Nothing
        End If
    Next i
  
    S2.Select
    Range("A2:B" & Rows.Count).ClearContents

    s = d.keys: sat = 2
    For j = 0 To d.Count - 1
        For i = mn To mk
            k = Application.Match(s(j) & "|" & CDate(i), Application.Transpose(dizi), 0)
            If IsError(k) Then
                Cells(sat, "A") = s(j)
                Cells(sat, "B") = CDate(i)
                sat = sat + 1
            End If
        Next i
    Next j
  
End Sub
 
Katılım
11 Haziran 2008
Mesajlar
121
Excel Vers. ve Dili
2003
Altın Üyelik Bitiş Tarihi
27-09-2022
Teşekkürler hocam, bazı sorunlardan dolayı siteye giremedim.
 
Üst