Filtreleme & Hesaplama

Katılım
29 Aralık 2010
Mesajlar
11
Excel Vers. ve Dili
365 / TR
Merhaba.
Forumda arama yaptım ancak istediğim cevaba denk gelemedim.

Excel 2007 kullanıcısıyım. Makro + Formülasyon ile bir program hazırladım (detaylı bir programdan oldu, öyleki orta seviye görsellikle birlikte dosyanın boyutu yaklaşık olarak 10 MB). programı maalesef işyeri veri güvenliği nedeniyle burada yayımlayamıyorum.

Sorum şu: Filtreleme esnasında excel in hesaplama yapmasını nasıl engellerim. Filtre kullanmam zorunlu. Ve filtrelenecek veri 2000+ satır /100+ sütun. Bu 2000+ satıra bağlı formüller de diğer formülasyonları tetikliyor. Filtrelenen satırların hepsinde formül yok. (Örn: Sırayla 20 sütun elle girilen veri olduğunu, 21. sütünda bu verilerin değerlendirilmesinin formüle edildiğini düşünün.. böyle devam ediyor). Filtreleme işlemi pc konfigürasyonu yükseldikçe sorun yaratmadan çalışıyor. Ancak pclerimiz o kadar da iyi olmadığı için (Tek çekirdekli P4 HT lerden 512 Mb DDR ramlerden bahsediyorum:) ) filtreleme uygulandığı anda hesaplama %100 olana kadar yaklaşık 1 ~2 dk aralığında sürebiliyor. Bu da hesaplama bitene kadar veri girişi yapılamaması demek.

Filtreleme esnasında Apllication`ın
.ScreenUpdating/.Calculation durumu False/xlCalculationManual değiştirmem, filtreleme ardından kullanılacak formüllerin tekrar aktif olabilmesi için True/xlCalculationAutomatic durmuna geri getirdiğim için aynı süreler yine oluşuyor.

Excelde filtrelenen hücrelerin neden tekrar hesaplandığını halen anlayabilmiş değilim.


Bir fikriniz var ise hevesle dinlemeye hazırım.
Teşekkürler.
 

Korhan Ayhan

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

Hacimli dosyalarda kolay çalışabilmek için hesaplama yöntemini manuele ayarlamanız yeterlidir.

Bu tarz dosyalarda her işlem yaptığınızda excel otomatik olarak hesaplamaya geçer. Buda bir müddet sonra can sıkıcı bir hal alır. Bu durumu aşmak için ARAÇLAR-SEÇENEKLER-HESAPLAMA sekmesinden hesaplama seçeneğini manuele ayarlamanız gerekir.

Sonuçları görmek istediğinizde F9 tuşuna basmanız yeterlidir.
 
Katılım
29 Aralık 2010
Mesajlar
11
Excel Vers. ve Dili
365 / TR
Programın kullanıcısı ben olmadığım ve kullanıcıların da her seferinde bunu yapabilecek zamanları olmayacağı düşüncesi ile şu şekilde bir çözüm buldum.

Filtreleme yapılacak sayfaya bir adet Otomatik Hesaplama Aç/Kapa butonu koydum. Public bir sabite tanımladım ve bu sabiteye ilk değer olarak 0 (sıfır) ı atadım. Sayfanın Activate olayında bu değer okunuyor ve formülasyon otomatiğe (Application.Calculation = xlCalculationAutomatic) geçiyor ve formüller çalışıyor. Butona basıldığında 0 -> 1 , 1 -> 0 a geçiriyor ve uyarı veriyor. Değer 1 iken oto formül manüele döndürüldüğünden (Application.Calculation = xlCalculationManual), kullanıcı tüm işlemlerini tatmin edici hızlarda yapabiliyor. Butona tekrar basıldığında filterelemedeki geçen sürenin çok daha az bir zaman diliminde (1-5 saniye aralığında) formüller hesaplanıyor. Sayfadan ayrılırken Deactivate olayında ise sabite ne olursa olsun tekrar 0' a çekilip, kullanıcının oto formülasyonu bozmaması sağlanıyor.

Neden bu kadar tefarruata girdiğimi soracak olursanız; filtrelenen verilerin, özellikle de hücre içlerinde hiç bir değişiklik yapılmamışken, otomatik hesaplamaya maruz kalması bana çok saçma geldi. Aynı sorunları yaşayanlara belki faydası olur diye düşünüyorum.

Herkese iyi günler dilerim.
 
Son düzenleme:

Korhan Ayhan

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

Çözüm bulmanıza sevindim. Bir hatırlatma yapma gereği duydum. Filtrelenen verilerin hesaplamaya maruz kalmasını saçma bulduğunuzu belirtmişsiniz. Ben bu konuda şöyle düşünüyorum. Excelde filtre metodunda çalışan formüller (ALTTOPLAM gibi) var. Bu sebeple sayfada filtreleme yaptığınızda sanıyorum excel şu şekilde düşünüp tepki veriyor.

"Kullanıcı filtre uyguladı ve sayfada formüller var. Hemen hepsini hesaplamalıyım."

Bu şekilde bir yorum yapıp sayfadaki formüllerin içinde ALTTOPLAM olduğunu gözetmeksizin hesaplama yapıyor.

Makro kullanmadan çözüm için benim önerdiğim yöntem kullanılmaktadır. Ya da ben etliye sütlüye karışmam derseniz sizin bahsettiğiniz şekilde makro ile çözümde üretilebilir.
 
Üst