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
 
Katılım
4 Kasım 2018
Mesajlar
1
Excel Vers. ve Dili
EXCEL 2007
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ı.)
 
Katılım
25 Ocak 2009
Mesajlar
8
Excel Vers. ve Dili
ofiice 2003
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.
 

Cengiz Demir

Altın Üye
Katılım
29 Haziran 2018
Mesajlar
608
Excel Vers. ve Dili
Office 365 TR (32 Bit)
Altın Üyelik Bitiş Tarihi
05-04-2025
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:
Katılım
25 Ocak 2009
Mesajlar
8
Excel Vers. ve Dili
ofiice 2003
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
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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:
Katılım
25 Ocak 2009
Mesajlar
8
Excel Vers. ve Dili
ofiice 2003
ilginize teşekkür ederim.. başında - olan hücreler için doğru sonucu vermemektedir.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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:
Katılım
25 Ocak 2009
Mesajlar
8
Excel Vers. ve Dili
ofiice 2003
-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.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Ş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
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
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
 
Üst