İki tarih arası günleri sıralama

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Selamlar ekteki dosyada sorunumu açıkladım. kişilerin kullanmış olduğu izinleri gösteren İki tarih arasındaki günleri yan yana sıralamak istiyorum. Kişi ay içinde birden fazla izin kullandığında sorun çıkıyor. bunu nasıl bir formülle yapabilirim. Yardımcı olursanız çok sevinirim.
 

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 kasacaktır. Hiç uğraşmadım.
Aşaıdaki kodu boş bir modül içine ekleyip sayfa açıkken çalıştırabilirsiniz.
C++:
Sub TarihSorgusu()
    Dim Veri, i As Integer, Say As Integer, k As Date, x As Byte
    Veri = Range("C3:J" & Range("B3").End(xlDown).Row).Value
    ReDim Liste(1 To UBound(Veri), 1 To Columns.Count - 11)
    For i = 1 To UBound(Veri)
        Say = 0
        For x = 1 To 7 Step 2
            If Veri(i, x) <> "" And Veri(i, x + 1) <> "" And IsDate(Veri(i, x)) And IsDate(Veri(i, x + 1)) Then
                For k = Veri(i, x) To Veri(i, x + 1) - 1
                    Say = Say + 1
                    Liste(i, Say) = k
                    Maksimum = WorksheetFunction.Max(Maksimum, Say)
                Next k
            End If
        Next x
    Next i
    Range("L3").Resize(UBound(Veri), Maksimum) = Liste
End Sub
 

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Teşekkür ederim Üstadım eline sağlık
 

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
210
Altın Üyelik Bitiş Tarihi
28-07-2027
Formülle kasacaktır. Hiç uğraşmadım.
Aşaıdaki kodu boş bir modül içine ekleyip sayfa açıkken çalıştırabilirsiniz.
C++:
Sub TarihSorgusu()
    Dim Veri, i As Integer, Say As Integer, k As Date, x As Byte
    Veri = Range("C3:J" & Range("B3").End(xlDown).Row).Value
    ReDim Liste(1 To UBound(Veri), 1 To Columns.Count - 11)
    For i = 1 To UBound(Veri)
        Say = 0
        For x = 1 To 7 Step 2
            If Veri(i, x) <> "" And Veri(i, x + 1) <> "" And IsDate(Veri(i, x)) And IsDate(Veri(i, x + 1)) Then
                For k = Veri(i, x) To Veri(i, x + 1) - 1
                    Say = Say + 1
                    Liste(i, Say) = k
                    Maksimum = WorksheetFunction.Max(Maksimum, Say)
                Next k
            End If
        Next x
    Next i
    Range("L3").Resize(UBound(Veri), Maksimum) = Liste
End Sub
Üstad bu kod gerektiği kadar işime yaradı. ama hep merak ettim acaba bu işlemi formülle yapmak istesek ne şekilde yapabiliriz. 1.izinden 2.izne geçişi bir türlü yapamadım. Hangi formülleri kullanacağımı söyleseniz de yeterli olur.
 
Üst