Makro ile sıralama

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
B sütununda blok ları yazmıştık ya onları siz I sütununa taşıdınız bende benzersiz bir şekilde (satırlar benzemeyecek şekilde 1 satır 1 kere ) tekrar formülle Q sütununa taşıdım .
İsterseniz B sütununda sayın isterseniz Q sütununda farketmez ,ben elle saydım herhangi bir formül veya makro bilmediğim için zor oldu
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,518
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
X4 hücresindeki tur hangi plakaya ait tur sayısı?
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
W4 hücresindeki 42 GBC 02 plakalı araç
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,518
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
İlgili plaka için 11 sayısına ulaşmak için hangilerini saydırdıysanız renklendirerek örnek dosya paylaşır mısınız?
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Hocam 43 mesajı mümkünse silebilir misiniz ? Kopyala yapıştır yapmaya kalktım , sorun oldu .
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,518
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Plaka_Durak_Analizi()
    Dim Satir_Listesi As Object, Plaka_Blok_Sayilari As Object
    Dim X As Long, Son As Long, Veri As Variant, Say As Long
    Dim Plaka_Satirlari As Range, Plaka As Range, Duraklar As Variant
   
    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationManual
        .EnableEvents = False
    End With
   
    Set Satir_Listesi = CreateObject("Scripting.Dictionary")
    Set Plaka_Blok_Sayilari = CreateObject("Scripting.Dictionary")
    
    Range("N3:S" & Rows.Count).ClearContents
   
    Son = Cells(Rows.Count, 8).End(3).Row
    If Son < 4 Then Son = 4
   
    Veri = Range("H3:L" & Son).Value
       
    ReDim Liste(1 To UBound(Veri, 1), 1 To 1)
   
    For X = LBound(Veri, 1) To UBound(Veri, 1)
        If Not Satir_Listesi.Exists(Veri(X, 5)) Then
            Satir_Listesi.Add Veri(X, 5), X
            Liste(X, 1) = Veri(X, 5)
        Else
            Liste(X, 1) = ""
        End If
    Next

    Range("N3").Resize(X - 1, 1) = Liste
    Satir_Listesi.RemoveAll
   
       
    For Each Plaka_Satirlari In Range("N:N").SpecialCells(xlCellTypeConstants, 23).Areas
        If Not Plaka_Blok_Sayilari.Exists(Plaka_Satirlari.Offset(, -6).Cells(1, 1).Value) Then
            Plaka_Blok_Sayilari.Add Plaka_Satirlari.Offset(, -6).Cells(1, 1).Value, 1
        Else
            Plaka_Blok_Sayilari.Item(Plaka_Satirlari.Offset(, -6).Cells(1, 1).Value) = _
            Plaka_Blok_Sayilari.Item(Plaka_Satirlari.Offset(, -6).Cells(1, 1).Value) + 1
        End If
    Next
    
    
    ReDim Liste(1 To UBound(Veri, 1), 1 To 5)
   
    For X = LBound(Veri, 1) To UBound(Veri, 1)
        If Not Satir_Listesi.Exists(Veri(X, 5)) Then
            Say = Say + 1
            Satir_Listesi.Add Veri(X, 5), Say
            Liste(Say, 1) = Veri(X, 5)
            Liste(Say, 2) = Veri(X, 1)
            Liste(Say, 3) = Veri(X, 2)
            Liste(Say, 4) = Veri(X, 3)
            Liste(Say, 5) = Veri(X, 4)
        End If
    Next

    Range("O3").Resize(Say, 5) = Liste

    Range("W4:Y" & Rows.Count).ClearContents

    Range("W4").Resize(Cells(Rows.Count, "P").End(3).Row - 2).Value = _
    Range("P3:P" & Cells(Rows.Count, "P").End(3).Row).Value
    
    With Range("W4:W" & Rows.Count)
        .RemoveDuplicates Columns:=1, Header:=xlNo
        .Sort .Cells(1, 1), xlAscending
    End With
    
    
    For Each Plaka In Range("W4:W" & Cells(Rows.Count, "W").End(3).Row)
        Plaka.Offset(, 1).Value = Plaka_Blok_Sayilari.Item(Plaka.Value)
    Next
    
    
    With Range("Y4:Y" & Cells(Rows.Count, "W").End(3).Row)
        .Formula = "=SUMIF(P:P,W4,R:R)"
        .Value = .Value
    End With
    
    
    Range("AA3:AI" & Rows.Count).ClearContents
    
    Range("AA3").Resize(Cells(Rows.Count, "Q").End(3).Row - 2).Value = _
    Range("Q3:Q" & Cells(Rows.Count, "Q").End(3).Row).Value
    
    With Range("AA3:AA" & Rows.Count)
        .RemoveDuplicates Columns:=1, Header:=xlNo
        .Sort .Cells(1, 1), xlAscending
    End With
    
    Duraklar = Application.Transpose(Range("AA3:AA" & Cells(Rows.Count, "AA").End(3).Row))
    
    Range("AA3").Resize(, UBound(Duraklar)).Value = Duraklar
    
    With Range("AA4").Resize(Cells(Rows.Count, "W").End(3).Row - 3, UBound(Duraklar))
        .Formula = "=SUMIFS($R:$R,$P:$P,$W4,$Q:$Q,AA$3)"
        .Value = .Value
        .NumberFormat = "hh:mm:ss"
    End With
    
    Columns.AutoFit

    With Application
        .ScreenUpdating = False
        .Calculation = xlCalculationAutomatic
        .EnableEvents = True
    End With
    
    Set Satir_Listesi = Nothing
    Set Plaka_Blok_Sayilari = Nothing
End Sub
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Selam Excel Dostları ,
Korhan bey , Öncelikle çok teşekkür ederim . Verdiğiniz kodları aşağıda eklediğim , sehirici_24 isimli dosyamda derlemeye toplamaya uyarlamaya çalıştım .
1_ sehirici dosyası sehirici sayfasındaki form a tıklayınca 4 adet buton oluşturmak zorunda kaldım. sil butonu satko sayfası ve sehirici sayfası verilerini silmek için bunda sıkıntı yok, ancak kod1 kod2 kod3 isimli 3 adet butonu sırasıyla tıklayarak verilerimi yazdırıyorum.sonuca ulaşıyor muyum evet ulaşıyorum ama isterdim ki kod1,kod2,kod3 yerine tek bir buton olsun .bu butonları kısaca izah edeyim
Kod_1 e tıklayınca sehirici sayfasında B sütunundaki bloklara göre DEF sütunlarını HIJKL sütunlarına yazdırıyor
Kod_2 e tıklayınca N ve O sütunlarına Kod_1 de elde ettiğimiz L sütunundaki , 2 sefer yazılmış olan satır no larını tek sefer yazdırıyoruz
Kod 3 e tıklayıncada son verdiğiniz kod devreye giriyor
bu 3 butonu birleştirmek istedim ama yapamadım Korhan bey.

2_ Son verdiğiniz ve Kod_3 butonuna tıklayınca çalışan kodu denedim toplama hatası veriyor hocam , örnek x4 sütunu yani 42 gbc 01 plakaya ait tur sayısı 12 iken sizin verdiğiniz kod 10 hesaplamış , 12 olduğunu şurdan biliyorum P sütununda zemin rengini de renklendirerek saydım , aynı şekilde 42 gbc 06 plakalı araçta 12 sefer yapmış ama x5 de 11 görünüyor.aynı şekilde diğerlerindede yanlışlık var

3_ son olarak Korhan bey DEF sütunlarında olup ta PQR sütunlarında olmayan ları AQ_AR_AS sütunlarına yazdırmak istiyorum (buda turun haricinde aracın hangi duraklara gittiğini tespit etmekiçin) bende formül ve elle bir şeyler yapmaya çalıştım (AP_AS sütunları arasında)
Korhan bey biliyorum sizi yoruyorum ama siz yardım etmezseniz de sonuca ulaşmam çok zor sona iyice yaklaştım . şimdiden teşekkürlerimi sunuyorum sağlıkla dolu bir yaşam dileğiyle
 

Ekli dosyalar

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Merhaba ,
Korhan bey 49.mesajımı gördüyseniz eğer 3 adet sıkıntımdan bahsetmiştim. Henüz cevap alamadım en azından 2,sualime cevap verebilirseniz diğerlerini bir şekilde aşacağımı düşünüyorum . 49 .mesajımdaki 2 sualimi aynen aktarıyorum
2_ Son verdiğiniz ve Kod_3 butonuna tıklayınca çalışan kodu denedim toplama hatası veriyor hocam , örnek x4 sütunu yani 42 gbc 01 plakaya ait tur sayısı 12 iken sizin verdiğiniz kod 10 hesaplamış , 12 olduğunu şurdan biliyorum P sütununda zemin rengini de renklendirerek saydım , aynı şekilde 42 gbc 06 plakalı araçta 12 sefer yapmış ama x5 de 11 görünüyor.aynı şekilde diğerlerinde de yanlışlık var
dosyam tamamlanmamış olsa bile verdiğiniz destek için gerçekten minnettarım çok sağolun ,teşekkürler Korhan bey
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Konuyu bir kez daha güncel ediyorum , cevap verebilecek tüm arkadaşlara şimdiden teşekkür ediyorum .
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Korhan bey , dosyamı yeniden revize ettim .Kod da gördüğüm eksiklik ile ilave edilmesi gerekeni maddeler halinde aşağıya izah etmeye çalışacağım , yukarıdaki mesajlarda sıkıntımı yeterince izah edemediğimi düşünüyorum , umarım yardımcı olursunuz .
En son verdiğiniz kod (Kod_3) da 2 adet sıkıntım var

1...En son verdiğiniz kod (Kod_3) PQRS sütunlarını yazdırıyor.PQRS sütunları nın 745-753 satırları arası 4.blok olarak tespit etmişsiniz Ancak plakalar farklı (745-751 arası 42 GBC 27......752-753 arası 42 GBC 28 ) olmuş. İşte tam bu noktada eğer plakalar farklı ise o blok ta olamaz .Yani blok =plaka olmalı

2...En son verdiğiniz kod (Kod_3) X4-X11 sütunlarına blok sayısını yanlış yazdırıyor.ben elle sayarak U4-U11 sütunlarına doğrusunu elle yazdım (sizin yazdırdığınız PQRS sütunlarında blokları saydım)

Yukarıdaki kod dan kaynaklı 2 sıkıntımdan hariç ilave edilmesi geren bir sorunum var oda ;

3... P sütununda bulunan bir plaka ile D sütununda bulunan aynı plakaların satır no suna göre eşleştirilip , P sütununda satır no su olmayan D sütunundaki aynı plakanın AO-AT sütunlarına kaydedilmesi, yani blok ta olmayanları tespit etmek
Ben bunları elle tek tek tespit edip AO_AT sütunlarına işledim. ( P sütununda olmayıp ta D sütununda olanları AM sütununda tespit ettim)
vereceğiniz destek benim için çok kıymetlidir .
Sağlıkla Kalın ..
 

Ekli dosyalar

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Korhan bey tekrar Merhaba ,
Tek bir sorun haricinde dosyamı tamamladım .O sorun da şu ,
Makro ile sıralama dosyasının sehirici sayfasında x6 ve x9 satırlarının değerleri 11 olması gerekirken sizin yazdığınız kod her ikisinide 10 olarak sonuç üretiyor.
İleri seviye isteyen bir kod olması sebebiyle o hatayı bulamadım , mümkünse usrformun Kod_2 butonunun içinde
"Rem aşağıda ki kod da olduğunu tahmin ediyorum" diye not aldığım yere bakarmısınız , Teşekkürler..
Dosyamın son hali
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
41,518
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eksik saymasının sebebi şu;

Ben kurguyu yaparken N sütunundaki dolu hücreleri dikkate aldım. Her ardışık alan bir blokmuş gibi sayıyor. Fakat bazı ardışık alanların içinde birden fazla blok var. Bunun ayrıştırmanın mantığını kurabilirsek doğru sonuca ulaşabiliriz.
 

şehiriçi

Altın Üye
Katılım
1 Ağustos 2013
Mesajlar
562
Excel Vers. ve Dili
Ofis 2016 TR 32 Bit
Altın Üyelik Bitiş Tarihi
12-03-2025
Selam , Korhan bey forumda sizi yakalamış iken , tamamlanamayan bu başlık için ve sizin son mesajınızı (56) değerlendirerek şöyle bir kurgu yapabilirmiyiz
Biliyorsunuz bu başlıkta sadece x sütunundaki veriler (yani araçların sefer sayıları oluyor) yanlış sonuç üretiyor ,onun dışında bir proplem yok görünüyor.
Q sütununda ki bloklar sonuç ta B sütunundan geliyor . Diyorum ki P sütununda ki plakaya göre hem B sütununda hem de Q sütununda olan blokları saydır sanız doğru sonuç üretmez mi
 
Üst