Evet, saydığınız üç şey de buna yol açabilir; fakat 45 MB dosya + “Hesaplanıyor %40” birlikte görülüyorsa genellikle iki ayrı sorun vardır: dosyayı şişiren gereksiz hücre/Pivot önbelleği ve Excel’i bekleten ağır hesaplama zinciri.
Ekteki performans_ve_boyut_sorunu_taslak.xlsx dosyasını da kontrol ettim. Taslak yalnızca yaklaşık 7,6 KB, yani gerçek 45 MB’lık dosya değil; fakat önemli bir problemi çok güzel gösteriyor: sayfada asıl veri küçük olmasına rağmen Excel sayfayı A1:Z5000 aralığına kadar kullanılmış kabul ediyor. Ayrıca A10:N99 civarında çok sayıda boş fakat biçimlendirilmiş hücre kaydı var; Z100 ve A5000'de de içerik bulunuyor. Dolayısıyla sizin şüphelendiğiniz “boş/gereksiz hücrelerin used range'i büyütmesi” gerçek bir sorun.
Ben şu sırayla giderdim:
Önce Ctrl+End testi yapın. Her sayfada Ctrl+End basın. Gerçek veriniz örneğin A1:M15000'de bitiyorsa ama Excel sizi XFD500000 veya benzeri bir yere götürüyorsa dosyada ciddi bir “kullanılmış alan şişmesi” vardır. Gerçek verinin altındaki satırların tamamını, sağındaki sütunların tamamını seçip Sil komutuyla silin. Sadece Delete tuşuyla içeriği temizlemek yeterli değildir. Sonra dosyayı kaydedin, kapatın ve yeniden açın.
Boş hücrelerdeki biçimlendirmeleri temizleyin. Özellikle tüm sütuna verilmiş kenarlık, dolgu, özel sayı biçimi ve koşullu biçimlendirme çok yaygın bir sebeptir. Örneğin veri 15.000 satırsa biçimi A:XFD veya 1:1048576 seviyesinde uygulamayın. Koşullu Biçimlendirme → Kuralları Yönet bölümünde "Uygulandığı yer" alanlarını kontrol edin. $A:$A, $A:$Z veya yüz binlerce satıra uygulanmış onlarca aynı kural görürseniz daraltın.
“Hesaplanıyor %40” için formülleri ayrı inceleyin. Bu mesajın ana sebebi genellikle Pivot önbelleği değil, formüllerdir. Özellikle A:A, B:B gibi tam sütun referanslarıyla çalışan ETOPLA/ÇOKETOPLA, DÜŞEYARA/XLOOKUP, TOPLA.ÇARPIM, dizi formülleri çok pahalı olabilir. Örneğin =ÇOKETOPLA(H:H;A:A;K2...) yerine gerçek veri 15.000 satırsa H2:H15000, A2:A15000 gibi sınırlı aralıklar çok daha hızlıdır. DOLAYLI (INDIRECT), KAYDIR (OFFSET), ŞİMDİ, BUGÜN, RASTGELE gibi yeniden hesaplanan fonksiyonlar da kontrol edilmeli.
Hızlı teşhis için Hesaplama Modunu geçici olarak Manuel yapın. Formüller → Hesaplama Seçenekleri → El ile/Manuel yapıp bir hücreye veri girin. Donma büyük ölçüde ortadan kalkıyorsa sorunun kaynağı neredeyse kesin olarak hesaplama zinciridir. Bu sadece teşhis içindir; sonrasında formülleri optimize edip otomatik hesaplamaya dönmek daha doğru olur.
Pivot önbelleğini kontrol edin. Birkaç Pivot aynı 10–15 bin satırı ayrı ayrı önbelleğe alıyorsa dosya gereksiz büyüyebilir. PivotTable Seçenekleri → Veri bölümündeki “Kaynak verileri dosyayla birlikte kaydet” seçeneğini, çalışma şekliniz uygunsa kapatmak dosya boyutunu ciddi azaltabilir. Ayrıca eski öğelerin Pivot önbelleğinde tutulmaması ve dosya açılırken gereksiz otomatik yenileme yapılmaması faydalıdır. Aynı veri kaynağından oluşturulan Pivotların mümkün olduğunca aynı önbelleği paylaşması da önemlidir.
Excel Tablosu kullanıyorsanız aralığı kontrol edin. Bazen tablo gerçekte 15.000 satır veri içerirken yanlışlıkla yüz binlerce boş satırı kapsar. Tablo Tasarımı → Tabloyu Yeniden Boyutlandır bölümünden gerçek veri sınırına çekmek gerekir.
Ad Yöneticisini kontrol edin. Formüller → Ad Yöneticisi içinde #BAŞV!, çok büyük aralıklar, bütün sütunlara işaret eden eski tanımlar veya silinmiş sayfalara giden isimler varsa temizlenmeli. Özellikle yıllardır kopyalanarak kullanılan ortak Excel raporlarında burada ciddi kalıntı oluşabiliyor.
Biçim/stil patlamasını kontrol edin. Başka Excel dosyalarından sürekli kopyala-yapıştır yapılmış raporlarda aynı görünen ama teknik olarak farklı binlerce hücre stili oluşabilir. Bu hem styles.xml bölümünü şişirir hem Excel arayüzünü ağırlaştırabilir. Ortak raporlarda şaşırtıcı derecede sık rastlanıyor.
Son test olarak XLSB deneyebilirsiniz. Dosyayı .xlsb olarak kaydetmek özellikle büyük tablo/formül dosyalarında boyutu ve açılış süresini azaltabilir. Fakat bunu önceki sorunları temizlemeden “tedavi” olarak görmemek gerekir; gereksiz 500.000 satır biçimlendirme varsa XLSB yalnızca semptomu küçültür.
Sizin taslak dosyanızdaki durum
Taslakta mantıken şöyle bir yapı var:
Gerçek ana veri
A1:B3
ama Excel'in gördüğü alan:
A1:Z5000
ve bunun içinde çok sayıda boş fakat kayıt altına alınmış/biçimlendirilmiş hücre mevcut. Yani gerçek 45 MB'lık raporunuzda aynı şey 5.000 değil örneğin 500.000–1.048.576 satıra kadar uzanıyorsa yalnız bu bile ciddi bir şişme yaratabilir.
Fakat önemli ayrım şu: Dosyanın 45 MB olması ile “Hesaplanıyor %40” aynı sebep olmak zorunda değil. Büyük ihtimalle gerçek dosyada:
Boyut problemi → Used Range + biçimlendirme + Pivot Cache
Donma problemi → Formüller + tam sütun referansları + koşullu biçimlendirme
şeklinde iki sorun üst üste geliyor.
Ben olsam gerçek dosyada önce hiçbir şeyi değiştirmeden teknik tarama yapardım: her sayfanın gerçek son veri hücresi / Excel'in gördüğü son hücre, formül sayısı, tam sütun referansları, koşullu biçimlendirme alanları, Pivot sayısı ve cache sayısı, isimlendirilmiş aralıklar ve XLSX içindeki hangi bölümün kaç MB tuttuğunu çıkarırdım. Böylece “45 MB'ın 32 MB'ı Pivot Cache'ten geliyor” veya “Sheet3.xml tek başına 28 MB çünkü 800 bin boş biçimlendirilmiş satır var” diye doğrudan kaynağı bulabiliriz.