topla carpım makrosu ihtiyacım var

Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
kolay gelsin arkadaşlar
ekledigim dosyada rapor2 sayfasında topla carpımla sorunumu cözdüm fakat ürün sayısı ve data sayfasına veri işledikce makina cok yavaşladı
bende bunu makro ile çözmeyi düşündüm fakat bilgim olmadıgı için bi baka bilirmisiniz?aşagıdaki formül sorunlarımı cözüyor ama makina kasılıyor
(veri aralıgını tamsayfa vermenedenim devamlı kayıt yapıyoruz günde 4 defa malzme giriş cıkışı oluyor o yüzden böle geniş tuttum)
=TOPLA.&#199;ARPIM((DATA!$B$2:$B$65536>=$E$2)*(DATA!$B$2:$B$65536<=$E$3)*(DATA!$H$2:$H$65536=$B$4)*(DATA!
ilk tarih son tarih &#252;r&#252;n ad&#305;
$J$2:$J$65536)):dua: :dua:
toplama alan&#305;
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Sitede, sorunuzun benzeri &#246;rnekler mevcut. &#214;ncelikle onlara bir bakman&#305;z&#305; &#246;neriyorum. Yine de &#231;&#246;zemezseniz ben dahil, yard&#305;mc&#305; olacak arkada&#351;lar &#231;&#305;kacakt&#305;r.
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
say&#305;n hamitcan
inceledigim &#246;rnekleri tam olarak anlayamad&#305;m
zaten burda sadeece aysonu toplam&#305;nda degil kitapdaki cari sayfalar&#305;nda fanan kendim adapte edicem &#246;rnek makroyu zaten 2 tarih aras&#305; ve birde &#252;r&#252;n ad&#305;na g&#246;re toplam ald&#305;rma nedenimde o rapor2 deki B s&#252;t&#252;n&#252; gibi
makro olay&#305;n&#305; daha tam hazmedemedim fonksiyon ve form&#252;l yazmada iyiyim ama makro daha tam oturmad&#305; kafamda
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Form&#252;llerinizi inceledim bir yere kadar standart gidiyor bir yerden sonra de&#287;i&#351;iyor. &#350;u andaki durumu do&#287;ru mu acaba?
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
say&#305;n hamitcan ben burda rapor2 sayfas&#305;nda B s&#252;t&#252;nundaki malzeme adlar&#305;na g&#246;re ve yukardaki e2 e3 sat&#305;rlar&#305;ndaki tarihe g&#246;re toplat&#305;yorum ve bu 7 ayl&#305;k periyotta yan yana dizilip gidiyor mavi olan b&#246;l&#252;mde giren &#252;r&#252;nlleri toplatt&#305;m ye&#351;il b&#246;l&#252;mdede kac ytl lik giri&#351; olmu&#351; c&#305;k&#305;&#351; olmu&#351; onlar&#305; toplatt&#305;m(yani cal&#305;&#351;t&#305;g&#305;m&#305;z sezon nisan 04 den ba&#351;lay&#305;p yanyana ekim 10 da bitiyor)
burda benim i&#231;in &#246;nemli olan B s&#252;tunundaki malzeme bu yeni bi &#252;r&#252;n gelince alt sat&#305;ra yazd&#305;mm&#305; direk raporda sorun olmadan raporu almak istiyorum buraya bir CommandButton ekleyip ordan cal&#305;&#351;t&#305;r&#305;cam makroyu burda toplam 4 form&#252;l var bunlar:

DEPO G&#304;REN 04 =TOPLA.&#199;ARPIM((DATA!$B$2:$B$65536>=$E$2)*(DATA!$B$2:$B$65536<=$E$3)*(DATA!$H$2:$H$65536=$B$4)*(DATA!$J$2:$J$65536))
BARA CIKAN 04 =TOPLA.&#199;ARPIM((DATA!$B$2:$B$65536>=$F$2)*(DATA!$B$2:$B$65536<=$F$3)*(DATA!$H$2:$H$65536=B4)*(DATA!$K$2:$K$65536))
F.ALI&#350; 04 =TOPLA.&#199;ARPIM((DATA!$B2:B$65536>=$O$2)*(DATA!$B2:B$65536<=$O$3)*(DATA!$H2:H$65536=$B$4)*(DATA!$L2:L$65536))
&#304;RSAL&#304;YEL&#304; ALI&#350; 04 =TOPLA.&#199;ARPIM((DATA!$B2:B$65536>=$T$2)*(DATA!$B2:B$65536<=$T$3)*(DATA!$H2:H$65536=$B$4)*(DATA!$M2:M$65536))
 
Son düzenleme:

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Aşağıdaki kodu dener misiniz?
Not:Cevabı sınayabilmeniz için, toplamlar, önceki satırın altında görünecektir.
Kod:
Sub ww()
    For t = 5 To 18
       Cells(7, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(4, 2).Address & ")*(DATA!j2:j65000))")
       t = t + 1
       Cells(7, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(4, 2).Address & ")*(DATA!k2:k65000))")
    Next
    For t = 19 To 32 
       Cells(7, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(4, 2).Address & ")*(DATA!L2:L65000))")
       t = t + 1
       Cells(7, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(4, 2).Address & ")*(DATA!M2:M65000))")
    Next
End Sub
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
say&#305;n hamitcan &#246;ncelikle cok te&#351;ekk&#252;r ediyorum.
sayfadaki t&#252;m &#252;r&#252;nler i&#231;in bunu nas&#305;l degi&#351;tirebiliriz?
yani B s&#252;tunuda &#351;uanda 168 &#252;r&#252;n var bunlar i&#231;inde bu makroyu nas&#305;l uygulata biliriz ? teksat&#305;rda &#351;uanda makro dogru cal&#305;&#351;&#305;yor &#246;b&#252;r dolu olan sat&#305;rlada uygulamam&#305;z laz&#305;m
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Böyle olunca da kodun çalışması uzayacak. Bence yine olayı formüllerle halletmek daha doğrusu gibi geliyor.
Şöyle bir öneride bulunayım; sayfa kapandığında formüller değere dönüşsün, açıldığında da tekrar formüller oluşsun.
Kod:
Sub ww()
For tt = 4 To [a65536].End(3).Row
    For t = 5 To 18
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(tt, 2).Address & ")*(DATA!j2:j65000))")
       t = t + 1
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(tt, 2).Address & ")*(DATA!k2:k65000))")
    Next
    For t = 19 To 32 
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(tt, 2).Address & ")*(DATA!L2:L65000))")
       t = t + 1
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B65000>=" & Cells(2, t).Address & ")*(DATA!b2:b65000<=" & Cells(3, t).Address & ")*(DATA!h2:h65000=" & Cells(tt, 2).Address & ")*(DATA!M2:M65000))")
    Next
Next
End Sub
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
normalde form&#252;llen ben de halletmek &#252;zereydimki dogrumu diye bikay&#305;t eklemeye cal&#305;&#351;t&#305;m baya bi bekletti beni kay&#305;t makrosunun cal&#305;&#351;ma s&#252;resi benim tolere edecegimden fazla s&#252;rd&#252; youn bi tempoda cal&#305;&#351;&#305;yoruz sezonda
fakat rapor sayfas&#305;n&#305; devaml&#305; kontrol etmiyoruz sadece ihtiyac&#305;m&#305;z olunca kontrol ediyoruz
&#351;uandaki makrodan memnunum h&#305;zland&#305;rmak i&#231;in sadece dolu h&#252;crelere bak&#305;p bitirse olurmu ? yani direk 65000 h&#252;&#231;reyi incelemeden &#351;uanda mesela 30 h&#252;&#231;re dolu kay&#305;t artt&#305;kca burakam da artsa olabilirmi? birde bana harcad&#305;g&#305;n&#305;z emek ve zaman i&#231;in
tekrar tekrar te&#351;ekk&#252;r ediyorum
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Şimdi farkettim,
Kod:
DATA!B2:B65000
satırını
Kod:
DATA!B2:B6100
şeklinde değiştirirseniz, makro oldukça hızlanıyor.
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
say&#305;n hamitcan degi&#351;tirmeden h&#305;z&#305; 7 dakika s&#252;rd&#252; core2 duo 1.66 mhz 1 gb ram de &#351;uanda ben elle dediginiz gibi degi&#351;tire bilirim bunu ama
bunu otomatikle&#351;tirme imkan&#305;m&#305;z varm&#305; makro i&#231;erisinde yoksa eger &#246;nemli degil benim i&#231;in gercekten cok g&#252;zel bi cal&#305;&#351;ma oldu ald&#305;g&#305;m rapor sayfas&#305;n&#305; sayenizde bitirdim allah raz&#305; olsun
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Ortalama veri sayınızdan biraz fazla tutmanız, makronuzun hızını arttıracaktır.
Örneğin veri sayısı 2000 ise
Kod:
DATA!B2:B65000
satırını
Kod:
DATA!B2:B63000
şeklinde değiştirmeniz yeterli olacaktır. Yada bu sayıyı makroda ufak bir değişiklikle dinamik hale sokmakta mümkün tabii ki.
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
peki dinamik hale getirmeye yard&#305;mc&#305; olabilirmisiniz?
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,739
Excel Vers. ve Dili
Excel 2019 Türkçe
Not: Yaln&#305;z kontrol etmedim.
Kod:
Sub ww()
son = Sheets("DATA").[a65536].End(3).Row
For tt = 4 To [a65536].End(3).Row
    For t = 5 To 18
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B" & son & ">=" & Cells(2, t).Address & ")*(DATA!b2:b" & son & "<=" & Cells(3, t).Address & ")*(DATA!h2:h" & son & "=" & Cells(tt, 2).Address & ")*(DATA!j2:j" & son & "))")
       t = t + 1
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B" & son & ">=" & Cells(2, t).Address & ")*(DATA!b2:b" & son & "<=" & Cells(3, t).Address & ")*(DATA!h2:h" & son & "=" & Cells(tt, 2).Address & ")*(DATA!k2:k" & son & "))")

    Next
    For t = 19 To 32 
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B" & son & ">=" & Cells(2, t).Address & ")*(DATA!b2:b" & son & "<=" & Cells(3, t).Address & ")*(DATA!h2:h" & son & "=" & Cells(tt, 2).Address & ")*(DATA!l2:l" & son & "))")
       t = t + 1
       Cells(tt, t) = Evaluate("=SumProduct((DATA!B2:B" & son & ">=" & Cells(2, t).Address & ")*(DATA!b2:b" & son & "<=" & Cells(3, t).Address & ")*(DATA!h2:h" & son & "=" & Cells(tt, 2).Address & ")*(DATA!m2:m" & son & "))")
    Next
Next
End Sub
 
Katılım
12 Nisan 2005
Mesajlar
80
Excel Vers. ve Dili
10 TR 2013 excel TR
Altın Üyelik Bitiş Tarihi
07-03-2024
say&#305;n hamitcan ilk makro ile yapt&#305;g&#305;m deneme 42 &#252;r&#252;nle 3 dakka fakat son yollad&#305;g&#305;n&#305;z makro gene ayn&#305; 42 &#252;r&#252;nle yapt&#305;g&#305;mda 10 saniyenin alt&#305;nda
s&#252;per bi cal&#305;&#351;ma oldu
cok te&#351;ekk&#252;r ediyorum bu yard&#305;mlar&#305;n&#305;z i&#231;in
 
Üst