< návrat zpět
MS Excel
Téma: Optimalizace výpočtu MAKRA
Zaslal/a Merlin99 28.12.2018 18:07
Zdravím všechny,
makro v priloze pracuje tak ze si ve sloupci B najde posledni radek a pak rozkopiruje dane vzorce do cele oblasti. Jen mi prijde ze je vypocet docela pomalej kdybych ho chtel pouzit na vetsi databazi. Zde je moje otazka je mozne vypocet nejak optimalizovat nebo s tim uz nic nedelam?
Dekuji za rady
elninoslov(28.12.2018 19:54)#042242 Skúste toto:
Sub MALED()
Dim PoslRadekV As Long, PoslRadekD As Long
PoslRadekD = wsData.Cells(Rows.Count, 1).End(xlUp).Row
If PoslRadekD < 2 Then MsgBox "Žádná data v liste DATA.", vbExclamation, "Chyba": Exit Sub
With wsVypocet
PoslRadekV = .Cells(Rows.Count, 2).End(xlUp).Row
If PoslRadekV < 5 Then MsgBox "Žádná data v liste VÝPOČET.", vbExclamation, "Chyba": Exit Sub
Application.ScreenUpdating = False
With .Cells(5, 3).Resize(PoslRadekV - 4, 3)
.Formula = Array("=SUMIFS(DATA!$B$2:$B$" & PoslRadekD & ",DATA!$A$2:$A$" & PoslRadekD & ",$B5)", "=VLOOKUP($B5,DATA!$A$2:$B$" & PoslRadekD & ",2,FALSE)", "=COUNTIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5)")
.Value = .Value
End With
Application.ScreenUpdating = True
End With
End Subcitovat
Merlin99(28.12.2018 20:13)#042243 elninoslov : DÍKY moc skvělé řešení a lítá to dobře, budu používat DĚKUJUUU
citovat
elninoslov(28.12.2018 20:27)#042244 Prípadne ešte zmeniť SUMIFS na SUMIF, teda prvú položku poľa Array() zmeniť
z
"=SUMIFS(DATA!$B$2:$B$" & PoslRadekD & ",DATA!$A$2:$A$" & PoslRadekD & ",$B5)"
na
"=SUMIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5,DATA!$B$2:$B$" & PoslRadekD & ")"
Teda celý riadok bude:
.Formula = Array("=SUMIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5,DATA!$B$2:$B$" & PoslRadekD & ")", "=VLOOKUP($B5,DATA!$A$2:$B$" & PoslRadekD & ",2,FALSE)", "=COUNTIF(DATA!$A$2:$A$" & PoslRadekD & ",$B5)")citovat
Merlin99(28.12.2018 20:47)#042245 elninoslov: vzdy mam vice promenych do vypoctu takze SUMIF nevyuziju, ale dekuju za napad. Reseni pridam do sve sbirky.
citovat