• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

İki tarih arası günleri sıralama

  • Konbuyu başlatan Konbuyu başlatan ordulu82
  • Başlangıç tarihi Başlangıç tarihi

ordulu82

Altın Üye
Katılım
24 Mart 2006
Mesajlar
215
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

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
 
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.
 
Geri
Üst