• DİKKAT

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

Soru fonksiyondaki aşırı yavaşlık

Dikkat ettiyseniz kod içinde döngü ve dizi yöntemleri bulunuyor. Bu tarz yöntemleri öğrenirseniz fonksiyona çevirmek hiç de zor değil.


hocam bu formülünüzü uzun zamandır kullanıyordum ancak raspery pc dediğimiz microsoft office sürümü server'dan olan bilgisayarlarda hesaplama yapmama sorunu başladı bu neden olabilir sizce? #AD şeklinde bir hata veriyor
 
Bahsettiğiniz pc hakkında bir bilgim yok maalesef.

Yetkilendirme sorunu olabilir. KTF'nin çalışması için makroların etkinleşmesi gerekiyor.
 
normal pc de hesaplıyor server dan çalışan excellerde hata veriyor
 
Peki fonksiyonu server üzerindeki excel dosyalarıızın içindemi barındırıyorsunuz? Bunu kontrol edin.

Bir de server'lar genelde İngilizce sürüm kullanırlar. Türkçe karakter kullanılan makrolar genelde sorun çıkartır. Ama ben fonksiyonda Türkçe karakter kullanmadım. Bunun sorun çıkaracağını zannetmiyorum. Sadece aklıma geldiği için paylaşmak istedim.
 
Option Explicit

Function K_TOPLA(Kriter As Variant) As Double
Dim Sayfa As Worksheet, Son As Long, Veri As Variant, X As Long

For Each Sayfa In ThisWorkbook.Worksheets
Son = Sayfa.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
Veri = Sayfa.Range("E1:F" & Son).Value
For X = LBound(Veri) To UBound(Veri)
If Veri(X, 1) = Kriter Then
If IsNumeric(Veri(X, 2)) Then K_TOPLA = K_TOPLA + Veri(X, 2)
End If
Next
Next
End Function





"*"'ın görevi nedir hocam? Birde her sayfanın 1-31 mesela 3500 üncü satırına kadar hesaplama yapmasına gerek yoktur sadece SİLME diye 1 sayfam var orası 3500-5000 satır 1-31 arası 50 satır sadece. Daha hızlı olması için koda bir revizyon yapılabilirmi? Bu arada server dan sorunu çözdüm.
 
"*" ifadesi ile sayfadaki son satırı bulduruyoruz. Kodun daha hızlı çalışması için eklemiştim.

Fonksiyonu dizi yöntemini kullanarak yazdım. Yani zaten hızlı çalışıyor.

Server üzerindeki sorunu nasıl çözdüğünüzü paylaşırsanız aynı sorunu yaşayan başka üyelerde faydalanırlar.
 
"*" ifadesi ile sayfadaki son satırı bulduruyoruz. Kodun daha hızlı çalışması için eklemiştim.

Fonksiyonu dizi yöntemini kullanarak yazdım. Yani zaten hızlı çalışıyor.

Server üzerindeki sorunu nasıl çözdüğünüzü paylaşırsanız aynı sorunu yaşayan başka üyelerde faydalanırlar.

Server üzerindeki sorunu server dan oturup kapatıp açında nedendir anlamış değilim çözülüyor sorun. Bu sorun muhtemelen kendi serverlarımızla ilgili hocam. Uzun süre çalışıp sonradan hesaplama yapmaması tuaf bir durum bence de.. Yani satırda sadece 50 satır doluysa komutlar 50 satır ilemi * ile buldurma yaptığından işlem yapıyor hocam? Kodda adım adım hata incelemesi yaptırırken örneğin 5 nolu sayfanın 3800 nolu satırında hata veriyordu hocam ve de bu satırda herhangi bir işlem yapacağı değer bulunmuyor ondan demek istemiştim. Acaba gereksiz yerlerle ilgilendiğinden yavaşlamamı oluyor o açıdan hızlandıracak komut demiştim
 
Siz sayfalarda gereksiz biçimlendirme falan yaptıysanız olabilir.

O satırları silip dosyanıza hız kazandırabilirsiniz.

İlk olarak formüller sekmesinden hesaplama yöntemini manuel (elle) olarak ayarlayın.

İlgili sayfaya gelin. En son dolu satırın altındaki boş satırdan sayfa sonundaki son satıra kadar mouse ile seçin ve sağ klik yaparak SİL komutunu çalıştırın.

Örnek olarak diyelim ki sayfada son dolu satır 50. satır. Siz 51. satırı seçip Ctrl+Shift+Aşağı Ok tuşuna basarsanız boş satırları tümünü seçmiş olursunuz. Sonrasında bu satırları silebilirsiniz.

Tüm sayfalarda bu işlemi yaptıktan sonra dosyanızı kaydedip sonucu gözlemleyin.

Büyük ihtimalle fonksiyon hızlanacaktır.
 
Geri
Üst