quote:
Op woensdag 22 juli 2020 22:22 schreef Tegan het volgende:Google zegt dat dit ook kan:
som(aantallen.als(bereik;{criterium1;criterium2}))
Ik kan het nu even alleen in de Engelse Excel testen en daar werkt het.
Dit krijg ik niet werkend. Kan je een voorbeeld geven wat je hebt gebruikt (Engelse termen zijn ook prima).
-edit 1-
Ik zie het al. Je hebt de invoer in Excel als een Matrix formule gedaan via CTRL SHIFT ENTER.
Hierdoor stel je de CEL in staat een matrix als input te nemen.
quote:
Op woensdag 22 juli 2020 23:44 schreef phpmystyle het volgende:[..]
Thanks, dit werkt wel!
Vind'm alleen niet zo logisch, had echt verwacht dat met een geneste aantallen.als OF het zou moeten lukken.
Het is een beetje een educated guess aan mijn kant. Ik liet de techniek wat weg omdat het zeker niet voor iedereen geschikt is. Volgens mij ligt het aan de combinatie van wat er in 1 cel van Excel getoond kan worden (namelijk alleen één waarde) en de functie die je gebruikt. De functie moet in staat zijn de Matrix om te toveren naar een waarde. Een functie heeft zodoende een INPUT en een RESULTAAT.
Functies zoals SOMPRODUCT accepteren een Matrix als inputwaarde. Functies zoals SOM en AANTAL niet. Dit kan je ook zien wanneer je de functie invoert. Excel geeft aan welke inputwaarde deze verwacht. Bij SOMPRODUCT is dat "matrix1;matrix2" en bij de andere genoemde functie 'bereik'. Het bereik is slechts een 1 dimensionale vector. Dit zegt niets meer dan dat SOMPRODUCT in staat is om een matrix als 1 waarde als resultaat terug te geven, zodat die waarde in je cel getoond kan worden.
Nu zijn de functies onderliggend in excel 'slim' geprogrammeerd. Iedere functie geeft een 'Object' terug en niet een 'String', 'Integer', 'Array', of 'Array[][]' - waarbij de laatste 'Array[][]' of vierkantsarray dus eigenlijk de matrix is. Het feit dat ze dat ongedefineerde object teruggeven zorgt ervoor dat het probleem van het vertalen van dat 'Object' naar die verwachte inputwaarde wordt overgelaten aan de bovenliggende functie. Hierdoor doen zich de volgende 2 scenario's zich voor.
Scenario 1: Je plaatst in de CEL de formule AANTAL.ALS(bereik;bereik)
De combinatie van bereik;bereik is in feite een matrix. Deze matrix ziet er als volgt uit:
SPOILER
Om spoilers te kunnen lezen moet je zijn
ingelogd. Je moet je daarvoor eerst gratis
Registreren. Ook kun je spoilers niet lezen als je een ban hebt.De functie verwerkt de matrix en de functie is niet in staat het resultaat terug te geven als een enkel getal. Daarom geeft de functie het resultaat van het Object terug.
Bij de verwerking van het resultaat van de functie als input op CEL niveau is de CEL niet in staat om het Object te verwerken naar een enkele waarde. , dus het resultaat van AANTAL.ALS wordt een matrix. Het resultaat wordt daardoor oneigenlijk getoond als 0.
Scenario 2: Je plaatst in de CEL de formule SOMPRODUCT -> met als subformule de aantal.als.
Wederom levert de subformule het resultaat van een Object dat gelijk is aan een Matrix aan de bovenliggende laag - namelijk de formule. De formule SOMPRODUCT kan wel een matrix als input verwerken en is in staat de berekening uit te voeren met die matrix. Hierbij kent SOMPRUDCT de waarde 1 toe aan een argument in de matrix wanneer A1 gelijk is aan D1, en de waarde 0 wanneer ze ongelijk zijn. De functie kan de SOM over deze hele array nemen en teruggeven als enkel getal aan de CEL. Nu wordt het getal getoond.
Helaas gaat het mij niet veel beter lukken om dit uit te leggen, omdat het deels aan de grenzen ligt van wat ik weet hoe het werkt.
Wel kan ik zeggen dat elke andere formule die je een input mogelijkheid geeft Matrix een zelfde type oplossing gaat geven.
-edit 2-
Overigens zie ik dat mijn bovenstaande verhaal niet 100% klopt. De formule KOLOMMEN(AANTAL.ALS(A:A;D:D)) geeft 1 als resultaat. Dit houdt eigenlijk in dat er niet een matrix onderliggend is met 2 argumenten, maar dat er een vector is met 1 argument... waarbij dat ene argument wéér een eigen vector is.
[ Bericht 3% gewijzigd door snabbi op 23-07-2020 07:45:39 ]