• DİKKAT

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

Sıralama yapma hakkında

Katılım
25 Ocak 2009
Mesajlar
8
Excel Vers. ve Dili
ofiice 2003
merhabalar
Elimde aşağıdakiler gibi içerik sütunum var bunları zamana göre sıralama yapmak istiyorum. Nasıl yapabilirim ?
7gün21saat2dk12sn
2gün20saat15dk5sn
2gün19saat24dk52sn
-1gün 37dk 21sn
-1gün 2saat 26sn
7gün16saat28dk12sn
-1gün 4saat 5dk 47sn
-1gün 4saat 42dk 45sn
-1gün 16saat 52dk 44sn
 
Verilerinizi alt alta yazdım. Hepsini seçtim. Veri bölümünden Sırala'ya tıkladım. Sıralama Koşulunu , "Değerler" yaptım. Düzen bölümünde "Özel Liste"ye tıkladım. "Pazartesi , Salı ..." şeklinde olan sıralamaya tıkladım. "Verilerim de üst bilgi var." butonuna tıklamadım. Ve "Tamam" dedim. ( Bu arada -1 Gün diye başlayan verilerinizi "1 Gün" olarak yazdım. Çünkü önce -1 diye yazmıştım ve olmamıştı.)
 
ilginize teşekkür ederim ama verimli sonuç alamadım. - ile başlayanlar ile başlamayanları karmaşık sıralıyor. - leri kaldırayım dedim 1gün 4 saat 2 dk yı 1 gün 14 saat 2 dk dan küçük sıralıyor.
 
Verilerinizde standart yok. Bazılarında arada boşluk var bazılarında yok. Ayrıca saat dakika vb. bazıları 2 hane bazılar tek hane.
Bunları belirli standartlara getirebilirseniz sıralama düzgün olur sanırım.
Tire leri ve boşlukları bul değiştirle düzeltebilirsiniz.
Ama saat dk vb. Ör 2dk. => 02dk , 4 saat => 04saaat gibi kolayca değiştirme imkanınız yoksa sıralamalar düzgün olmayacaktır. Ayrıca bazı verilerde saatde yazmıyor.. Epey karışık verileriniz.
Verileri Gün Saat Dakika Saniye olarak ayrı sütunlara alma şansınız varsa o zaman sıralama için bir şeyler yapılabilir.
 
Son düzenleme:
ilginize teşekkür ederim.
Şöyle bir yaklaşım ile çözüme yaklaşabildim fakat uğraştırdı epey.
1-sütunda "-" terimi bulunanları filtreledim
2-Tüm sütun seçerek
"gün" terimini "*24*60*60-"
"saat" terimini "*60*60-"
"dk" terimini "*60-"
"sn" terimini "*1" şeklinde değiştirdim Sonuç -41*24*60*60- 3*60*60- 6*60- 33*1 örneğindeki gibi oldu excel bunu işlem olarak algılamadı (kolay bir yolu var ve bildirirseniz sevinirim)

3- sütunda "-" içerenleri filtrelemiştim. bunu kaldırdım.
bu kez ekside olmayan zamanlar kaldığından
Tüm sütun seçerek
"gün" terimini "*24*60*60+"
"saat" terimini "*60*60+"
"dk" terimini "*60+"
"sn" terimini "*1" şeklinde değiştirdim Sonuç 41*24*60*60+3*60*60+6*60+33*1 örneğindeki gibi oldu

4- sonra yeni iki sütun açarak bunları birine sadece "=" koydum diğerine birleştir formülü ile "=" ve "-41*24*60*60- 3*60*60- 6*60- 33*1" hücrelerini birleştirdim. =-41*24*60*60- 3*60*60- 6*60- 33*1 şeklinde oldu. Excell yine işlem olarak algılamadı. (Sanırım kaynak dosyamın .csv uzantılı olmasından)(kolay bir yolu var ve bildirirseniz sevinirim)
5- işlemleri tüm sütuna uyguladım.
6- Unicode metin dosyası olarak kaydettim sonra bu dosyayı birlikte aç seçeneği ile Excel ile açtım.. Sonuç "-3553593" gibi sayısal oldu
sonrası sayısal sıralama olduğundan kolayca yaptım

başka birine de yardımcı olur umuduyla... Teşekkür ederim
 
Merhaba.

Belirttiğiniz işlemin benzerinin yapıldığı aşağıdaki kodu çalıştırın ve sıralamayı B sütununa göre yapın.
Verilerin A1'den başladığı varsayıldı. Kod A sütunundaki metinsel değerlerin SANİYE cinsinden sonuçlarını B sütununa yazar.
Rich (BB code):
Sub SIRALAMA_ICIN_YARDIMCI()
For sat = 1 To Cells(Rows.Count, "A").End(3).Row
    brn = "+"
    If Mid(Cells(sat, "A"), 1, 1) = "-" Then brn = "-"
    Cells(sat, "B") = Evaluate("=" & Replace(Replace(Replace(Replace(Replace(Cells(sat, "A"), "gün", "*86400" & brn), _
                                            "saat", "*3600" & brn), "dk", "*60" & brn), "sn", ""), Chr(160), ""))
Next
Range("A1:B" & Cells(Rows.Count, "A").End(3).Row).Sort [B1], 1
End Sub
 
Son düzenleme:
ilginize teşekkür ederim.. başında - olan hücreler için doğru sonucu vermemektedir.
 
Estağfurullah.

İsteğinizi tam anlamamış olabilirim ama doğru sonucu vermiyor cevabı anlamlı değil,
onun yerine şöyle yazmalısınız ki çözüm yolunda mesafe alınabilsin değil mi?
"..... şeklindeki metinsel değerin karşılığı .... olması gerekirken .... oluyor"
 
Son düzenleme:
-3saat 46dk 14sn metinsel değerinin karşılığı "-13574" olması gerekirken "-8026" oluyor.

+ değerdekiler için formül tamam ama - değerler için hatalı sonuç vermektedir.
 
Şimdi daha iyi anlaşıldı.
Sayfayı yenileyerek ilk kod cevabımı kontrol edip, yenisini kullanabilirsiniz.

Tabi isterseniz sıralama işlemi de kod üzerinden yapılabilir.
Bunun için Next satırı ile End Sub satırının arasına aşağıdaki satırı eklemek yeterli olur.
Rich (BB code):
Range("A1:B" & Cells(Rows.Count, "A").End(3).Row).Sort [B1], 1
 
Belki fark etmemişsinizdir diye sıralama olayını da kod'a ilave ettim ve
FORMÜL (SUBSTITUTE) yerine REPLACE kullanarak ilk cevabımı tekrar güncelledim.
Sıralamayı AZALAN yapmak isterseniz sıralama kod satırının sonundaki 1 sayısını 2 yapmanız yeterli olur.
Sayfayı tekrar yenileyerek ilk cevabımı kontrol edin.
 
Tekrar merhaba.
Verdiğim kod'u farklı metinsel değerlerle denediğimde fark ettiğim bir sorun var.
O da; hücrede, sadece 1gün ya da sadece -56dk veya sadece 47saat gibi, süre türlerinden sadece 1 tanesinin olması durumu.
Kod'un aşağıdaki yeni halini kullanabilirsiniz.
Rich (BB code):
Sub HESAPLA_SIRALA()
For sat = 1 To Cells(Rows.Count, "A").End(3).Row
    brn = "1": deg = WorksheetFunction.Trim(Replace(Replace(Cells(sat, 1), Chr(160), ""), " ", ""))
    If Mid(Cells(sat, "A"), 1, 1) = "-" Then brn = "-1": deg = Mid(deg, 2, Len(deg))
    deg = Replace(Replace(Replace(Replace(deg, "gün", "*86400+"), "saat", "*3600+"), "dk", "*60+"), "sn", "")
    If Right(deg, 1) = "+" Then deg = Mid(deg, 1, Len(deg) - 1)
    Cells(sat, "B") = brn * Evaluate("=" & deg)
Next
Range("A1:B" & Cells(Rows.Count, "A").End(3).Row).Sort [B1], 1
End Sub
 
Geri
Üst