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

Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Bahsettiğiniz pc hakkında bir bilgim yok maalesef.

Yetkilendirme sorunu olabilir. KTF'nin çalışması için makroların etkinleşmesi gerekiyor.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
normal pc de hesaplıyor server dan çalışan excellerde hata veriyor
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
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.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
"*" 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.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
"*" 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
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,608
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
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.
 
Üst