• Privacywetgeving
    Het is bij Helpmij.nl niet toegestaan om persoonsgegevens in een voorbeeld te plaatsen. Alle voorbeelden die persoonsgegevens bevatten zullen zonder opgaaf van reden verwijderd worden. In de vraag zal specifiek vermeld moeten worden dat het om fictieve namen gaat.

Kan deze matrixformule sneller en met dynamisch bereik?

Status
Niet open voor verdere reacties.

oceanrace

Gebruiker
Lid geworden
14 mei 2008
Berichten
198
Hallo Forummers,
Ik heb een goed werkende matrixformule, echter ik krijg deze niet aan de praat met dynamische bereiken.

Code:
{=ALS($T$57=$BJ$3;"";ALS(RIJ()-6<=$BO$3;ALS(SOMPRODUCT((PLLijst!$AX$2:$AX$35000=$BO$2)*(PLLijst!$AC$2:$AC$35000>0))>=RIJ()-6;INDEX(PLLijst!$A$2:$A$35000;KLEINSTE(ALS((PLLijst!$AX$2:$AX$35000=$BO$2)*(PLLijst!$AC$2:$AC$35000>0);RIJ(PLLijst!$AC$2:$AC$35000)-1;"F");RIJ()-6));INDEX(PLLijst!$A$2:$A$35000;KLEINSTE(ALS((PLLijst!$AX$2:$AX$35000=$BO$2)*(PLLijst!$AC$2:$AC$35000="");RIJ(PLLijst!$AC$2:$AC$35000)-1;"F");RIJ()-(SOMPRODUCT((PLLijst!$AX$2:$AX$35000=$BO$2)*(PLLijst!$AC$2:$AC$35000>0))+6))));""))}

Kan deze formule uberhaupt wel met dynamische bereiken worden toegepast?
Misschien dat hij daardoor ook sneller zou kunnen werken.
 
Ik zie geen problemen als jouw dynamische bereiken even lang zullen zijn.
Wellicht kun je ook als test voor de snelhieid een aantal hulpkolommen gebruiken, zodat er:
a) geen waardes die toch niet wijzigen herberekend moeten worden
b) Er voor gedeeltesvan jouw formule misschien snellere (niet) somproduct/matrixgeorienteerde mogelijkheden te vinden zijn.
 
Met deze formule zoek ik continue nieuwe gegevens op basis van kengetallen.
Dat maakt de formule wel traag.
 
Heb je wel 35000 regels nodig?
Kan je niet beter bepalen wat de laatste regel is en dit in een cel zetten zodat je er naar kan verwijzen?

Met vriendelijke groet,


Roncancio
 
Beste Roncancio,
Dat is wel een goed idee, weet je ook hoe ik in die formule naar de inhoud van een cel kan verwijzen?
 
Je zou kunnen werken met Indirect
Stel in cel A1 bereken je het benodigde aantal rijen.
Vervolgens krijg je zoiets als:

Code:
=SOMPRODUCT((Indirect("PLLijst!$AX$2:$AX$"&A1)=$BO$2)* ....

Met vriendelijke groet,


Roncancio
 
kun je geen gedefinieerde naam aanmaken met een dynamisch bereik voor beide delen van de matrixformule. Dat leest ook een stuk makkelijker?

Ctrl+F3, geef een naam, en geef als bereik "=VERSCHUIVING(PLLijst!$AX$2;;;AANTALARG(PLLijst!$AX$2:$AX$35000);1)"

Dit werkt echter alleen als alle cellen vanaf "AX2" t/m de onderste cel in rij "AX" achtereenvolgens gevuld zijn. maar dat lijkt me toch wel gezien je formule.

anders kun je ook een versie van "INDIRECT" in de verwijzing opnemen
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan