Excelbat
Gebruiker
- Lid geworden
- 23 mrt 2012
- Berichten
- 404
Zie bijlage. Via VBA bereken ik een sommen.als, gemiddelden.als en aantallen.als.
(Ik weet dat dit makkelijker kan met standaard excelformules, maar ik heb dit via VBA gedaan, omdat ik VBA meer en meer onder de knie wil krijgen).
Zolang ik de te berekenen range lager hou dan ongeveer 2000 rijen, gaat het goed.
Bij 2500 rijen wordt de Macro eruit geknald vanwege (denk ik) geheugenprobleem.
Hoe kan ik dit geheugenprobleem oplossen?
Bekijk bijlage SommenAlsSumIfsAantallenAlsCountIfsGemiddeldenAlsAverageIfsExcelbat.xlsb
Greetz/Excelbat
(Ik weet dat dit makkelijker kan met standaard excelformules, maar ik heb dit via VBA gedaan, omdat ik VBA meer en meer onder de knie wil krijgen).
Zolang ik de te berekenen range lager hou dan ongeveer 2000 rijen, gaat het goed.
Bij 2500 rijen wordt de Macro eruit geknald vanwege (denk ik) geheugenprobleem.
Hoe kan ik dit geheugenprobleem oplossen?
Code:
Sub Excelbat()
Dim j As Integer
Dim xyz As Integer
Tabelle1.Cells(1, 13).CurrentRegion.ClearContents
Tabelle1.Cells(1, 23).CurrentRegion.ClearContents
Application.Wait Now + #12:00:02 AM#
sn = Range("a1:h2000")
'2000 rijen en 7 kolommen
ReDim sp(2000, 7)
'Vanaf rij 2 t/m 2000
For j = 2 To UBound(sn)
sp(j, 1) = sn(j, 1)
sp(j, 2) = sn(j, 2)
sp(j, 3) = sn(j, 4)
'Hier kijken we wat er opgeteld moet worden, alweer in rij 2 t/m 2000, resultaat komt in kolom 4 en 5 van sp
For xyz = 2 To UBound(sn)
If sn(xyz, 1) = sn(j, 1) And sn(xyz, 2) = sn(j, 2) Then sp(j, 4) = sp(j, 4) + sn(xyz, 4)
If sn(xyz, 1) = sn(j, 1) And sn(xyz, 2) = sn(j, 2) Then sp(j, 5) = sp(j, 5) + 1
Next
'Hier kijken we of kolom 4 en 5 en 6 van sp ingevuld gaat worden of niet
sp(j, 6) = sp(j, 4) / sp(j, 5)
Next
'Hier gooien we het resultaat naar de sheet toe (begint in cel 21 omdat j begonnen is met 2:
Tabelle1.Cells(1, 13).Resize(UBound(sp), 7) = sp
Tabelle1.Cells(1, 23).Resize(UBound(sp)) = Application.Index(sp, , 6)
End Sub
Bekijk bijlage SommenAlsSumIfsAantallenAlsCountIfsGemiddeldenAlsAverageIfsExcelbat.xlsb
Greetz/Excelbat