• DİKKAT

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

Tarihe göre sıralama

Katılım
12 Temmuz 2011
Mesajlar
46
Excel Vers. ve Dili
office 2010
Arkadaşlar merhaba

Ekli dosyadaki veriler fazla miktarda. Sadece açık olan aegean sayfasındaki verileri A sütunundaki tarihlere göre sıralamak istiyorum. Aşağıya doğru uzunca bir dosya ve sıralamayı beceremedim. Macro ile mi yapılır nasıl yapılır çözemedim. Basit gibi görünüyor ama şöyle bir sorun var. Mesela listede 11 numaralı satıra bakarsanız bu satırın hemen altında 12 numaralı satırda aynı kişiye ait oda fiyatında bir fiyat daha var. Listeyi bu şekilde tarih sırasına koymak istiyorum. Boşlukların kalması gerekiyor. Listenin bu haliyle tarih sıralamasına konması gerekiyor. Yapamıyorum.
 

Ekli dosyalar

Son düzenleme:
Listenize bu haliyle sıralama komutunu uygularsanız aradaki boşluklar yok olur.

Boşluklarla beraber sıralanması için makro kullanmanız gerekir.

Aşağıdaki kodu deneyiniz.

Kod:
Sub Filtrele()
    Range("AE7").Formula = "=LOOKUP(2,1/(A$7:A7<>""""),A$7:A7)"
    Son = Cells(Rows.Count, 1).End(3).Row + 1
    Range("AE7:AE" & Son).FillDown
    Range("A7:AE" & Rows.Count).Sort Range("AE7"), xlAscending
    Range("AE:AE").ClearContents
    Range("A1").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Listenize bu haliyle sıralama komutunu uygularsanız aradaki boşluklar yok olur.

Boşluklarla beraber sıralanması için makro kullanmanız gerekir.

Aşağıdaki kodu deneyiniz.

Kod:
Sub Filtrele()
    Range("AE7").Formula = "=LOOKUP(2,1/(A$7:A7<>""""),A$7:A7)"
    Son = Cells(Rows.Count, 1).End(3).Row + 1
    Range("AE7:AE" & Son).FillDown
    Range("A7:AE" & Rows.Count).Sort Range("AE7"), xlAscending
    Range("AE:AE").ClearContents
    Range("A1").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
Hiç makro kullanmadım, nasıl yapıcam bunu ?
 
Dosyanızı açın.

ALT+F11 tuşlarına basıp kod editörünü açın.
INSERT menüsünden "Module" ekleyin.
Sağ tarafta açılan beyaz alana verdiğim kodu yapıştırın.
Excel sayfanıza geri dönün.
Sayfanıza bir şekil ekleyin.
Şekil üzerinde sağ klik yapın ve açılan menüden "Makro Ata" seçeneğini seçin.
Açılan pencereden makroyu seçip tamam diyerek işlemi tamamlayın.
Dosyanızı "Makro içerebilen dosya" formatında kayıt edin.
Sonra şekle tıklayarak makroyu çalıştırabilirsiniz.
 
Makro çalışıyor, buraya kadar herşey normal, hatta ekrana işleminiz tamamlanmıştır yazısı da geliyor ancak A sütunundaki tarihi ilk iki rakama göre yani gün numarasına göre sıralamış, bu şekilde sıralandığı zaman ay baz almadığı gün baz alarak sıraladığı için tarih sıralaması yanlış oluyor.
 
Merhaba,

Bir deneyin bakalım. Arada boşluklar olunca işler karışıyor.

Kod:
Sub Sırala()

    Dim i   As Long
    Dim Hcr As Range
    
    Range("A7").Select
    
    i = Cells(Rows.Count, "A").End(3).Row
    
    With Range("A7:A" & i)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Copy
        .PasteSpecial Paste:=xlPasteValues
        Range("H1") = 1
        Range("H1").Copy
        .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
        .NumberFormat = "m/d/yyyy"
    End With
    
    Range("A7:AC" & i).Sort KEY1:=[A1]
    For Each Hcr In Range("B7:B" & i).SpecialCells(xlCellTypeBlanks)
        Hcr.Offset(0, -1) = ""
    Next Hcr
    
End Sub
 
Merhaba,

Bir deneyin bakalım. Arada boşluklar olunca işler karışıyor.

Kod:
Sub Sırala()

    Dim i   As Long
    
    Range("A7").Select
    
    i = Cells(Rows.Count, "A").End(3).Row
    
    With Range("A7:A" & i)
        .SpecialCells(xlCellTypeBlanks).FormulaR1C1 = "=R[-1]C"
        .Copy
        .PasteSpecial Paste:=xlPasteValues
        Range("H1") = 1
        Range("H1").Copy
        .PasteSpecial Paste:=xlPasteAll, Operation:=xlMultiply, SkipBlanks:=False, Transpose:=False
        .NumberFormat = "m/d/yyyy"
    End With
    
    Range("A7:AC" & i).Sort KEY1:=[A1]
    
End Sub
Malesef yine olmadı. Tarihleri 1. aydan başlayarak sıralamıyor, ikinci aydan başlıyor oysa dosyada ocak ayı da var. Ayrıca boş kalan alanlara da tarih atıyor. Gün, ay formatı da bu şekilde değil kullandığımız gibi olabilir mi ? gün, ay , yıl şeklinde ? Ben formülde değiştirdim ama sonuç yine değişmedi.
 
Merhaba,

benim denemelerimde doğru sıralıyor.

Verdiğim kodlarda boş hücreye eklenen tarihleri de sildim.
 
Aşağıdaki kodu deneyiniz.

Kod:
Sub Filtrele()
    Son = Cells(Rows.Count, 1).End(3).Row + 1
    Range("A6:A" & Son).TextToColumns Destination:=Range("A6"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 4), TrailingMinusNumbers:=True
    Range("AE7").Formula = "=LOOKUP(2,1/(A$7:A7<>""""),A$7:A7)"
    Range("AE7:AE" & Son).FillDown
    Range("A7:AE" & Rows.Count).Sort Range("AE7"), xlAscending, , , , , , xlNo
    Range("AE:AE").ClearContents
    Range("A1").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Aşağıdaki kodu deneyiniz.

Kod:
Sub Filtrele()
    Son = Cells(Rows.Count, 1).End(3).Row + 1
    Range("A6:A" & Son).TextToColumns Destination:=Range("A6"), DataType:=xlDelimited, _
    TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
    Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
    :=Array(1, 4), TrailingMinusNumbers:=True
    Range("AE7").Formula = "=LOOKUP(2,1/(A$7:A7<>""""),A$7:A7)"
    Range("AE7:AE" & Son).FillDown
    Range("A7:AE" & Rows.Count).Sort Range("AE7"), xlAscending, , , , , , xlNo
    Range("AE:AE").ClearContents
    Range("A1").Select
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub

Harikasınız çok teşekkür ederim. Sorun kalmadı. Sağolun varolun
 
Geri
Üst