Çözüldü Formülleri VBA Koduna Çevirmek

reosman

Normal Üye
Excel Versiyonu
Excel 2016
Excel Sürümü
64 Bit
Excel Dili
Türkçe
=TOPLA.ÇARPIM(('Yüreğir-2'!$A$2:$A$1048576<>"")*('Yüreğir-2'!$B$2:$B$1048576<>"")*('Yüreğir-2'!$C$2:$C$1048576<>"")*('Yüreğir-2'!$D$2:$D$1048576<>"")*('Yüreğir-2'!$E$2:$E$1048576<>"")*('Yüreğir-2'!$F$2:$F$1048576<>"İZ OLDU"))

=TOPLA.ÇARPIM(('Yüreğir-4'!$A$2:$A$1048576<>"")*('Yüreğir-4'!$B$2:$B$1048576<>"")*('Yüreğir-4'!$C$2:$C$1048576<>"")*('Yüreğir-4'!$D$2:$D$1048576<>"")*('Yüreğir-4'!$E$2:$E$1048576<>"")*('Yüreğir-4'!$F$2:$F$1048576<>"İZ OLDU"))

=TOPLA.ÇARPIM(('Sarıçam-2'!$A$2:$A$1048576<>"")*('Sarıçam-2'!$B$2:$B$1048576<>"")*('Sarıçam-2'!$C$2:$C$1048576<>"")*('Sarıçam-2'!$D$2:$D$1048576<>"")*('Sarıçam-2'!$E$2:$E$1048576<>"")*('Sarıçam-2'!$F$2:$F$1048576<>"İZ OLDU"))

=TOPLA.ÇARPIM(('Sarıçam-4'!$A$2:$A$1048576<>"")*('Sarıçam-4'!$B$2:$B$1048576<>"")*('Sarıçam-4'!$C$2:$C$1048576<>"")*('Sarıçam-4'!$D$2:$D$1048576<>"")*('Sarıçam-4'!$E$2:$E$1048576<>"")*('Sarıçam-4'!$F$2:$F$1048576<>"İZ OLDU"))

Sevgili üstadlarım yukarıdaki formüllerin VBA koduna çevrilmesini talep ediyorum. Çok uğraştım lakin beceremedim. Yardımlarınızı rica ediyorum. Formülde çok kasıyor
 
Selamlar,

Makro bilgim çok kısıtlı olduğundan, Formüller üzerinden açıklamaya çalışırsam,

TOPLA.ÇARPIM işlevi DİZİ formül gibi çalışır.
** Çok fazla satır veri içeren ve de fazla koşul içeren hesaplamalarda kasılma yapması normaldir.
** Çok fazla veri olmasa da, sizin yazdığınız gibi (A2 : A1048576) komple kolonu hesaba dahil ettiğinizde de extra performans kaybına neden olacaktır.

Bunun için,

1 - TOPLA.ÇARPIM işlevi yerine ÇOKEĞERSAY işlevi tercih edilmelidir. Performans açısından TOPLA.ÇARPIM işlevine göre daha yüksek performansa sahiptir.
Örneğin,
ilk formülünüz için

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

şeklinde deneyiniz.

2 - Eğer ki, verilerinizin satır adedi makul bir seviyede ise, Ad Tanımlamaları kullanarak Dinamik alan tanımları oluşturulup, formüllerde kullanılabilir.

İlk formülünüzü ele alırsak,
TOPLA.ÇARPIM işlevinde A kolonundan F kolonuna kadar 6 kolon olduğundan 6 adet eşit satır adedinde dinamik alan tanımlanmalı.
Bu da 6 adet koşul anlamına gelmekte.

DİZİ formül kullanacaksanız, bu işleme eşdeğer bir formül yazılabilir.
Öncelikle, dinamik alan için ad tanımlamaları yaparsak,
Önemli olan kolon F kolonudur. F kolonundaki son dolu satıra göre listedeki satır adedini bulmak için dizi formül olmamak üzere,
p ad tanımlaması

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

Daha sonra F kolonu için Sonuc ad tanımlaması

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

Ve son olarak da Alan ad tanımlaması (A kolonundan E kolonuna kadar)

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

Sonucu hesaplamak üzere DİZİ Formül olarak

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

şeklinde deneyiniz...

DİZİ formüllerin hücreye girişleri ENTER ile değil, CTRL+SHIFT+ENTER tuşlarının 3 üne aynı anda basılarak yapılır. Formül düzgün şekilde girildiğinde, formül otomatik olarak {...} parantezleri içerisine alınır. Formül doğru girilmediğinde ya da { } parantezleri manuel yazıldığında, formül düzgün çalışmayacaktır.

3 - Formülü direkt olarak VBA ile yazıp, sonuç hesaplatmak ile formülü hücreye yazıp hesaplatmak eşdeğer performanslıdır.

Örneğin
Yüreğir-2 sayfasına, H1 hücresine 2. maddedeki formül sonucunu yazdırırsak (Gerekli, Ad Tanımlamaları yapıldıktan sonra)

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(4 satır)

kodlarını Yüreğir-2 kod sayfasına yazın. Kodu isterseniz bir butona atayıp, butona basarak çalıştırın, isterseniz F5 ile çalıştırın.
2. maddedeki hücreye formül yazıp hesaplayacağınız performansla eşdeğerdir.

Not : Veri büyüklüğünüz fazla ise, yine hesaplamalar yavaş olacaktır. Bu durumda da özel kodlarla hesaplanmak üzere makro yazılmalı... Bu da beni aşacaktır.
 
Moderatörün son düzenlenenleri:
Sayın 52779,
Verdiğiniz bilgiler için çok çok teşekkür ediyorum. Çok açıklayıcı bir bilgi. Zahmet etmişsiniz. Allah sizden razı olsun. Çok memnun oldum. Sağolun varolun.
 
Ekteki dokumanı inceleyebilirsiniz...

ÇOKEĞERSAY işlemi, Yüreğir-2 sayfası H1 hücresinde...

diğer işlemler ise, Sayfa1 de....

Ekleme : 12.07.2021 06:09
Dokumandaki veri boyutları makul seviyede olduğundan
F kolonlarındaki son dolu satıra göre liste satır adetleri

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

yerine
DİZİ formül olarak kullanılan

Kod:
İçeriği görüntülemek için giriş yapmalısınız
(1 satır)

ile hesaplanmıştır.
 

Ekli dosyalar

Moderatörün son düzenlenenleri:
Ömer hocam nolur kusuruma bakmayın lütfen inanın bazı sıkıntılardan dolayı siteye girememiştim. Yeni gördüm. Allah bin kere razı olsun. Çok çok teşekkür ederim. Emeğinize sağlık. Deneyip bilgi vereceğim.
 
Konuyu başlatan
Normal Üye
Katılım
Konu Bilgi
Durum
Çözüldü 
Forum
Excel Formül Soruları
Başlangıç tarihi
Son yanıt tarihi
Cevaplar
7
Üst