formülü hücre içinde kullanmak yerine vba da yapmak

Katılım
28 Ocak 2008
Mesajlar
260
Excel Vers. ve Dili
2003
Merhaba,


2 sayfada baya bir formüllerim var if, vlookup, sumproduct gibi bunlar userformumda bir işlem yaparken (kaydet,sil gibi) okadar çok ağırlaştırıyorki çözüm olarak excelde özelliklerde hesaplama özelliğini manuel olarak yapıyorum bu seferde güncelleme olmuyor nasıl yapsamda bu formüller yerine kod yazsam forumda aratıyorum ama sonuç alamıyorum.

Örnek ;

A2 hücresi formülü

Kod:
SUMPRODUCT((Bilgiler!$A$2:$A$65536=List!$A$1)*(Bilgiler!$K$2:$K$65536=List!$D$15)*(Bilgiler!$GY$2:$GY$65536=List!$N$1))+Q3
benzer örnek B5 hücresi

Kod:
IF(ISERROR(+O24/($C$24+$D$24+$E$24+$F$24+$G$24+$H$24+$I$24+$J$24+$K$24+$L$24+$M$24+$N$24+$O$24+$P$24+$Q$24+$R$24)*100);"";+O24/($C$24+$D$24+$E$24+$F$24+$G$24+$H$24+$I$24+$J$24+$K$24+$L$24+$M$24+$N$24+$O$24+$P$24+$Q$24+$R$24)*100)
gibi ben bunları hücreler bazında nasıl vba ya taşırım.... Yani bu tip bir formülü vba ya nasıl eklerim
 

Korhan Ayhan

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

Bu tip sorunları aşmak için bence en güzeli tablo oluştururken ileride yapılabilecek raporlama ve sorgulamalar için uygun yapıyı belirlemektir. Hele bahsettiğiniz gibi satır sayınız oldukça fazla ise genelde sorgulamalarda birden fazla kritere göre olacağı için genelde TOPLA.ÇARPIM formülü tercih edilir. Buda oluşturalacak sorgunun yavaşlamasına sebebiyet verir.

Ayrıca eğer tablo yapınız uygunsa en güzel ve hızlı raporlama şekli ÖZET TABLO dur. Bunuda kullanabilirsiniz.

Eğer yok ben formülleri makro ile yazıp kullanmak istiyorum derseniz. Bunuda şu şekilde yapabilirsiniz.

İlk hücrenize formülünüzü yazın. Sonra bu hücreyi seçin. Makro Kaydet tuşuna basın. Hücre üzerinde iken F2 ve enter tuşlarına basın. Sonra makroyu durdurn. ALT+F11 tuşlarına basıp kaydettiğiniz makroyu bulun. İşte koda çevirmek istediğiniz formülünüz artık karşınızda.

Bundan sonra yapacağınız işlem ise hücreye uyguladığınız formülü doldurma yöntemi ile çoğaltmak. Daha sonra çoğalttığınız formülü değere çevirerek biraz olsun çalışmanıza hız kazandırabilirsiniz.

Daha farklı olarak bir sürü çözüm önerilebilir. Bunun için tablonuzda kullandığınız yapıyı görmek gerekir. Ayrıca formülü ne amaçla kullanacaksınız buda çok önemlidir.

Umarım açıklayıcı olmuştur.
 
Son düzenleme:
Katılım
8 Şubat 2008
Mesajlar
86
Excel Vers. ve Dili
Office 2003 Türkçe
Çok güzel

Korhan bey,
Çok güzel bir şey öğrendim. Bu harika bir özellik. Soruyu soran arkadaşımıza ve size ayrı ayrı teşekkürler.
 
Katılım
1 Eylül 2005
Mesajlar
283
Excel Vers. ve Dili
microsoft office 2019
merhaba sayın korhan ayhan
gerçekten ilginç vede harika bir çözüm

makroyla kaydettikten sonra formüller tekrar hücrelere geliyor hücrelerde formül olmasını istemiyorsak nasıl yapabiliriz

örnek aşağıdaki makro


Sub Makro3()
'
' Makro3 Makro
'

'
Range("Tablo2[NET TUTAR]").Select
ActiveCell.FormulaR1C1 = "=IF(RC[-5]="""","""",SUM(RC[-5],-RC[-1]))"
Range("Tablo2[NET TUTAR]").Select
Range("W4").Activate
End Sub
 

Korhan Ayhan

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

Ekteki dosyada DÜŞEYARA fonksiyonunu makro yöntemi ile döngü kullanılarak hücrelere uygulama yöntemi örneklendirilmiştir.

Takıldığınız yerler varsa sorabilirsiniz.
 
Katılım
1 Eylül 2005
Mesajlar
283
Excel Vers. ve Dili
microsoft office 2019
merhaba sayın korhan ayhan

dosya için teşekkür ederim bunu bir neseneye bağlamak yerine otomatik çalıştıramazmıyız.ayrıca daha önce bu konu ile forumda bir başlık açılmıştı.yapılan yöntem çalışma sayfasını çok ağırlaştırmıştı.bende 10000 satırlık tablo var ağırlaştırmanın önüne geçilebilirmi
 

Korhan Ayhan

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

Otomatik çalışması için ilgili sayfanın aşağıdaki olaylarına kod yazılarak formül değer olarak kullanılabilir. Buradaki en önemli unsur formülün veri olan satır bazındamı yoksa her değişimde sürekli olarak 10.000 satıra birden mi uygulanacak olmasıdır. Satır bazında ilgili formül makro olarak uygulanırsa daha verimli çalışacaktır. Aksi halde her değişimde 10.000 satıra uygulamak çalışmanızı doğal olarak yavaşlatacatır. Çözüm var fakat yöntem belirlemek gerekiyor.

Kod:
Private Sub Worksheet_Activate()
Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
Kod:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
 
Katılım
1 Eylül 2005
Mesajlar
283
Excel Vers. ve Dili
microsoft office 2019
evet sayın korhan ayhan
dediğiniz gibi satır bazında olsa daha iyi olacak
 
Katılım
1 Eylül 2005
Mesajlar
283
Excel Vers. ve Dili
microsoft office 2019
örneğin iki sütunun çarpımı diyelim p*q değeri r sütununa yazılacak
ama p100*q100=r100 satırında işlem yapacak yoksa sayfa veya sayfalarda donmalar oluyor.
 
Üst