• DİKKAT

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

2 Tarih aralığını döngüye sokmak

Katılım
12 Aralık 2020
Mesajlar
74
Excel Vers. ve Dili
2016 tr
Merhaba

Elimde 20220225 formatında bir ilk tarih var 20220305 formatındada bi son tarih bu iki tarih arasını döngüye sokup a sütununa yazdıracak bi formül varmıdır ?

örneğin

20220227
20220228
20220301

Tarih formatı yıl ay gün şeklindedir
 
Çok fazla detay vermemişsiniz.

Bu kod inputbox ile ilk ve son tarihi sorup; A1 den itiabaren aşağıya doğru birer arttırarak sizin istediğiniz formatta tarihleri yazıyor.

İlk ve son tarihi belirli hücrelerden alınacaksa ve yazdırılacak bölge farklıysa kodları buna göre düzenlersiniz.

C#:
Dim Trh1 As Date
Dim Trh1 As Date
Dim Trh2 As Date
Dim ilk As String
Dim son As String
Dim Say As Long

Sub Tarih_Yaz()

ilk = Application.InputBox("İlk Tarih", 1)

son = Application.InputBox("Son Tarih", 1)

Trh1 = Left(ilk, 4) & "." & Mid(ilk, 5, 2) & "." & Right(ilk, 2)
Trh2 = Left(son, 4) & "." & Mid(son, 5, 2) & "." & Right(son, 2)

Say = Trh2 - Trh1

For x = 0 To Say
    
    Trh = Trh1 + x

    Cells(x + 1, 1) = Year(Trh) & Format(Month(Trh), "00") & Format(Day(Trh), "00")

Next x

End Sub
 
Merhaba,

Birinci Tarihin C1, ikinci tarihin D1 hücresinde olduğu varsayılarak :

Aşağıdaki kodları deneyin ve kendinize uyarlayın.

Kod:
Sub Yaz()

    Dim Tar1    As Date, _
        Tar2    As Date, _
        i       As Long
   
    Tar1 = DateSerial(Left(Range("C1"), 4), Mid(Range("C1"), 5, 2), Right(Range("C1"), 2))
    Tar2 = DateSerial(Left(Range("D1"), 4), Mid(Range("D1"), 5, 2), Right(Range("D1"), 2))
   
    For Tar1 = Tar1 To Tar2
        i = i + 1
        Cells(i, "A") = Format(Tar1, "yyyymmdd")
    Next Tar1
   
End Sub

Not : Geç kalmışım :)
 
Üstad sizin kodlar daha sade ve profesyonelce.
Hani biz 10 kulaç atıp da hedefe giderken, siz 2 kulaçta işi bitiriyorsunuz :D

Merhaba,

Birinci Tarihin C1, ikinci tarihin D1 hücresinde olduğu varsayılarak :

Aşağıdaki kodları deneyin ve kendinize uyarlayın.

Kod:
Sub Yaz()

    Dim Tar1    As Date, _
        Tar2    As Date, _
        i       As Long
 
    Tar1 = DateSerial(Left(Range("C1"), 4), Mid(Range("C1"), 5, 2), Right(Range("C1"), 2))
    Tar2 = DateSerial(Left(Range("D1"), 4), Mid(Range("D1"), 5, 2), Right(Range("D1"), 2))
 
    For Tar1 = Tar1 To Tar2
        i = i + 1
        Cells(i, "A") = Format(Tar1, "yyyymmdd")
    Next Tar1
 
End Sub

Not : Geç kalmışım :)
 
Üstad sizin kodlar daha sade ve profesyonelce.
Hani biz 10 kulaç atıp da hedefe giderken, siz 2 kulaçta işi bitiriyorsunuz :D

Merhaba,

Siz baya işin içine InputBox'ları sokunca işler doğal olarak uzuyor. Ben kestirmeden gittim :)
 
Merhaba,

Makro olarak sormuş ama arkadaş formül istemiş. Ben de formül ile çözüm önereyim.
C1 ve D1 hücrelerinde tarih varsa, A1 hücresine formülü yazıp sütuna kopyalayın.

Kod:
=EĞER(TARİH(SOLDAN($C$1;4);PARÇAAL($C$1;5;2);SAĞDAN($C$1;2))+SATIR()-1>TARİH(SOLDAN($D$1;4);PARÇAAL($D$1;5;2);SAĞDAN($D$1;2));"";TARİH(SOLDAN($C$1;4);PARÇAAL($C$1;5;2);SAĞDAN($C$1;2))+SATIR()-1)
 
Merhaba

Üstat Ali Beyin önerisi ile alternatif formül.
Kod:
=EĞER(METNEÇEVİR($C$1;"0000-00-00")+SATIR()-1>METNEÇEVİR($D$1;"0000-00-00");"";METNEÇEVİR($C$1;"0000-00-00")+SATIR()-1)

Açıkçası METNEÇEYİR kullanmayı ben de düşünmüştüm ama tarihi metin olarak algılar diye denememiştim.
Ali bey, herzamanki gibi yine yol gösterdi.
 
Geri
Üst