• DİKKAT

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

Topla.Çarpım İle İlgili Bir Soru (Satır,Sütun)

Katılım
16 Mayıs 2008
Mesajlar
35
Excel Vers. ve Dili
2019 Türkçe
Selamlar ,

VBA olayına yeni başladım o yüzden bu sorumu maruz görün forumda aradım ama tam olarak bulamadım yada anlayamadım kendi örneğin üzerinden olursa anlamam daha kolay olur diye düşünüyorum.

topla.çarpım uyguladığım büyük bir tablom var. Biraz yavaş olduğu için daha hızlı olsun diye Kodu vba da yazdım fakat satır sütün olayını çözemedim , örnek dosyayı ekledim. Formülü aşağı ve yana doğru (satır,sütun) nasıl çoğaltabilirim?
 

Ekli dosyalar

Merhaba.
Aşağıdaki şekilde yapılabilir.
Ayrıca, hesaplama alanındaki hücreleri (D3:O40)
#.##0,00;[Kırmızı]-#.##0,00;-
şeklinde biçimlendirmenizi öneririm.
Kod:
Sub BT()
A = "MUAVİN_DATA!$K$2:$K$20000" 'PROJE
B = "MUAVİN_DATA!$M$2:$M$20000" 'BAKİYE
C = "MUAVİN_DATA!$N$2:$N$20000" 'AY
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
With Range("[B][COLOR="Blue"]D3:O40[/COLOR][/B]")
    .Formula = "=SUMPRODUCT((PROJE_DATA![B][COLOR="Red"]$[/COLOR][/B]B3= " & A & ")*(PROJE_DATA!D[B][COLOR="red"]$[/COLOR][/B]2= " & C & ")*(" & B & "))"
    .Value = .Value
End With
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
End Sub
 
Son düzenleme:
yardımlarınız için çok tşk ederim Ömer bey ,

önerinizi de dikkate alacağım . Bir iki sorum olacak tam olarak anlamak için

1) Bu kodu açıklayabilir misiniz ?

Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
With Range("D3:O40")

bunu yaparak çözmüşsünüz bu tarz işlemlerimde formüllerim de bu kodu yazdığımda uyarladığım da sorunum çözülüyor doğru mudur ?

2) birde .formula yapmışsınız neden buna gerek duyuluyor ?
 
Son düzenleme:
Malumdur, TOPLA.ÇARPIM gibi çok sayıda veriyi koşullu toplamaya yarayan işlevler nispeten yavaş çalışan işlevlerdir.
Application.... şeklindeki satırın : işaretinden;
-- önceki kısmı işlem yapılırken ekran yenilenme işlemini (yapılan işlemin görüntülenmesi) durduruyor,
-- sonraki kısım ise işlem bitene kadar sayfadaki HESAPLAMA SEÇENĞİNİ Otomatik olmaktan çıkartıp Elle şekline çeviriyor.
Kod'un sonundaki benzer satırda ise bunun tersi yapılıyor.

With Range tek başına değil End With satırıyla birlikte bir blok.
İşlevi; alanın (D3:O40) tümüne bu formülü uygulama işlemidir.

Kod'daki .Value=.Value şeklindeki satırın sol başına TEK TIRNAK işareti ekleyip kod'u tekrar çılıştırırsanız,
hücrelerdeki formülleri görebilirsiniz.
Aslında formülünüzde yaptığım tek değişiklik iki adet $ işareti biri sütun adını diğeri de satır numarasını sabitlemeye yönelik.
Böylece formül kopyalandığında (sağa ve aşağı) kriter olarak kullanılacak hücrelerin adresi doğru yazılmış oluyor.
 
Şimdi oturdu her şey çok teşekkür ederim .

son sorum .formula bu neden gerekli ? yada ne işe yarıyor ?
 
. Formula ve .Value 'deki . işareti, With 'in sağındaki Range("D3:O40") alanını temsil ediyor.
Başka bir anlatımla Range("D3:O40").Formula = ".......FORMÜL......" anlamına geliyor.
-- Yani önce alana formül uygulanıyor.
-- Sonra formül sonuçları değer olarak aynı alana yazılıyor.
İşlem bittiğinde End With satırına geçiliyor ve işlem bitiriliyor.
 
Estağfurullah, öğrenmek isteyene (bildiğimiz bir mevzu ise tabi) her zaman üşenmeden ve bildiğim kadarıyla açıklama yazarım.
İyi günler.
 
Geri
Üst