makro ağır çalışıyor ????

Katılım
2 Şubat 2007
Mesajlar
194
Excel Vers. ve Dili
Office 2007 Tr
Altın Üyelik Bitiş Tarihi
31/03/2022
arkadaşlar ekte sunulan dosyada "iptalfatura" makrosu çok ağır çalışıyor.bu makro ile tahsil olunan çeklerimi kontrol ediyorum.e sutununda olan bir rakam f sutununda olduğunu kontrol ediyorum.eğer ayni rakam (yani çek tutarı) e sutununda sutununda 2 ve f sutununda 3 defa var ise makroda yapmak istediğim 2 e sunununda ve 2 f sutunundan işaretlemesidir.yani ayni rakamın fazla olan sutunda bir adet işaretlenmeyecek.şimdiden teşeküe ederim
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Merhabalar

Kodunuzdaki for i ve for k iç içe döngüleri, 2500x2500=6.250.000 kere işlem tekrarı üretiyor. Üstelik bu döngülerde koşullar sağlandıkça, ekrana değer yazma veya boyama işlemi de yapılmakta ... Bu süreci oldukça uzatır ve yavaşlatır.

İşlemleri biraz daha hızlandırmak için, döngü kapasitesini, verinizin boyutuna uygun olarak kurmalısınız. Dosyanızda, 267 satırlık veri olmasına rağmen siz 2500 standart satıra göre işlem yaptırıyorsunuz. Eğer 267'ye göre işlem yaparsanız, 267x267=71.289 işlem tekrarı öngörülür.

Kodlarınızı aşağıdaki gibi revize ederseniz, -benim bilgisayara göre- yaklaşık 5-10 dakika süren boyama ve toplama işlemlerini, 3.47 saniyeye indirgeyebilirsiniz. Belki küçük birkaç kod değişikliği ile süre daha da indirgenebilir. Ama sizin için bu yeterlidir sanırım.

Kod:
Sub iptalfatura()
a = Time
Application.ScreenUpdating = False
On Error Resume Next
'sarıyaboya makrosu
Dim i As Integer
For i = 1 To Sheets("Kontrol").Cells(65536, 1).End(xlUp).Row Step 1
    For k = 1 To Sheets("Kontrol").Cells(65536, 1).End(xlUp).Row Step 1
        If Cells(i, "e") <> "" Then
           If Cells(i, "e") = Cells(k, "f") Then
              If Cells(i, "e").Interior.ColorIndex <> 6 Then
                 If Cells(k, "f").Interior.ColorIndex <> 6 Then
                    Cells(i, "e").Interior.ColorIndex = 6
                    Cells(k, "f").Interior.ColorIndex = 6
                 End If
              End If
           End If
        End If
    Next k
Next i
.....
.....
Diğer Kodlarınız aynı ....
.....
.....
Msgbox time-a
End Sub
 
Katılım
2 Şubat 2007
Mesajlar
194
Excel Vers. ve Dili
Office 2007 Tr
Altın Üyelik Bitiş Tarihi
31/03/2022
say&#305;n fpc merhaba
zannediyorum ki 4 defa bana yasrd&#305;mc&#305; oldunuz.ne kadar te&#351;ek&#252;r etsem az gelir.size iki sorum olacak:

1. izah etti&#287;im gibi bunlar benim tahsil olunan &#231;eklerim.&#231;eklerin adeti burada az g&#246;r&#252;n&#252;yoe ama y&#305;l i&#231;inde bunlar&#305;n adeti 10.000 ge&#231;iyor.bu g&#246;nderdi&#287;iniz makro ile ayni h&#305;zda i&#351;lemi yapmam&#305;z m&#252;mk&#252;n m&#252;?
2.bu makrolar&#305;n basamak &#351;eklinde yazman&#305;n espirisi nedir.faydas&#305; nedir ve o &#351;ekilde yazmaz isem zarar&#305; nedir?ben makrolar ile 2 aydan bu yana ilgileniyor&#305;m.fazla bilgim yok.kusura bakmay&#305;n
 
Katılım
15 Haziran 2006
Mesajlar
3,704
Excel Vers. ve Dili
Excel 2003, 2007, 2010 (TR)
Sn.MetinAvci,

zannediyorum ki 4 defa bana yasrdımcı oldunuz.ne kadar teşekür etsem az gelir.size iki sorum olacak:
Elimizden geldiği ve bilgimizin yettiği kadar her üyemize faydalı olmaya çalışıyoruz. Size de bu yardımlardan denk geldiyse, ne mutlu bize :)

1. izah ettiğim gibi bunlar benim tahsil olunan çeklerim.çeklerin adeti burada az görünüyoe ama yıl içinde bunların adeti 10.000 geçiyor.bu gönderdiğiniz makro ile ayni hızda işlemi yapmamız mümkün mü?
Bahsettiğiniz gibi 10.000 satır verinin, benzer mantıkla işaretlenmesi için, Döngüler haricinde de Excel'in güçlü araçları mevcut. For-Next Döngüleri ile bütün satırlar kontrol edileceğine, Find komutuyla çok daha hızlı işlem yaptırılabilir.

Ama hiç değiştirmeden devam ederseniz; prosedürünüzün bu yapısı ile 10.000 satırın derlenmesi ve değerlendirilmesi, oldukça uzun zaman alır.

NOT: Dediğim gibi, uzun sürse de sorununuz çözümsüz değil. Süre farklı yöntemler kullanılarak makul şekilde kısaltılabilir.

2.bu makroların basamak şeklinde yazmanın espirisi nedir.faydası nedir ve o şekilde yazmaz isem zararı nedir?
Bu şekilde kod yazmamızın, işlevsellik (veya makronun işleyişi) açısından hiçbir önemi yoktur. Ama kodun okunmasını kolaylaştırır. Mesela, bir For-Next döngüsünün nerede başlayıp nerede bittiğini ve arada ne gibi işlemler yapıldığı bir bakışta anlayabilirsiniz.

Siz kodlarıızı, hiç paragraf oluşturmadan da yazsanız olur. (Zararı olmaz yani :)

Ancak size tavsiyem, paragrafları hep kullanmanız yönündedir. Hem kendiniz hem de bir başkası kodlarınızı daha rahat okuyabilir ve hataları daha kolay çözebilir.
 
Katılım
2 Şubat 2007
Mesajlar
194
Excel Vers. ve Dili
Office 2007 Tr
Altın Üyelik Bitiş Tarihi
31/03/2022
te&#351;e&#351;ek&#252;r ederim.Say&#305;n FPC size zahmet olacak ama ayni kumut Find komutuyla nas&#305;l yaz&#305;lacak? &#351;imdiden te&#351;ek&#252;r ederim.veya buradan find komutu ile ilgili daha fazla bilgi nededen alabilirim.
 
Üst