Sebebini anlayamadığım bir ayıklayıp sıralama durumu

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Merhaba Arkadaşlar,
Alınan özel notları tarih ve sınıf bazında tasnif edilmesi için yaptığım çalışmada karşılaştığım problem çok garibime gitti. Asıl dosya ile birebir aynı ama uydurma değerlerden oluşan dosyada 3 sn nin altında yapılan hesaplama, asıl dosyada 90 sn nin üzerine çıkıyor. Makro aynı, yazılar benziyor ama süre 30 kattan fazla. Neden olabilir?
(Ekli dosyadaki değerlerin tamamı uydurmadır)
Saygılarımla
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Asıl dosyanızda F8 tuşu ile kodu adım adım çalıştırıp hangi aşamada takıldığını tespit ederseniz oraya yoğunlaşabilirsiniz.

Ek olarak asıl dosyanızda formüller varsa bildiğiniz gibi bu performans kaybına yol açmaktadır.

Genel olarak kodları hızlandırmak için kullanılan aşağıdaki yapıyı kendi makronuza uyarlayabilirsiniz.

Mesela örnek dosyanızdaki kodu ilk çalıştırdığımda işlem yaklaşık 3,5 saniye civarında tamamlandı.

Aşağıdaki kodları eklediğimde ise 0,86 saniye civarında tamamlandı.

C++:
Option Explicit

Sub Hizli_Calisan_Makro_Ornegi()
    Dim Old_Calculation_Mode as Integer

    With Application
         Old_Calculation_Mode = .Calculation
        .Calculation = xlCalculationManual
        .ScreenUpdating = False
        .EnableEvents = False 'Tercihen kullanılabilir...
    End With
 
    Rem Sizin makro kodlarınız...
    Rem Sizin makro kodlarınız...
    Rem Sizin makro kodlarınız...
    Rem Sizin makro kodlarınız...
    Rem Sizin makro kodlarınız...
 
    With Application
        .Calculation = Old_Calculation_Mode
        .ScreenUpdating = True
        .EnableEvents = True 'Tercihen kullanılabilir...
    End With
End Sub
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
İlginize çok teşekkür ederim.
Saygılarımla
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
Dim sorunu olduğunu düşünüyorum. Calculate... ile başlayan 4 farklı ifadeyi denedim çalışmadı. Belkide excel de versiyon sorunudur. Bilemedim.
Saygılarımla
 

Ekli dosyalar

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben önerdiğim kodda o satırı ekledim. Son halini deneyebilirsiniz.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Günaydın Korhan Ayhan Hocam,
Evet şimdilik 4 saniye fark etti. Aktif fonksiyonları makroya çevirebilirsem çok daha çabuk yapacak.
İlginize teşekkür ederim.
Saygılarımla
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,269
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eğer verileriniz uygunsa dizi (array) metodu ile çok daha hızlı sonuçlar alabilirsiniz.

Forumda bu yapıda kodları sık sık paylaşıyoruz.

Redim ifadesi ile arama yaparsanız örneklerine ulaşabilirsiniz.
 

Tevfik_Kursun

Altın Üye
Katılım
30 Temmuz 2012
Mesajlar
3,794
Excel Vers. ve Dili
Office 2016 Pro - Türkçe 64 Bit
Altın Üyelik Bitiş Tarihi
12-02-2029
Sayın Korhan Ayhan Hocam,
Teşekkür ederim, bakıyorum, bakmaya da devam edeceğim.
Saygılarımla
 
Üst