• 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.

max in somproduct werkt niet zoals ik wil

Status
Niet open voor verdere reacties.

sylvester-ponte

Verenigingslid
Lid geworden
19 apr 2007
Berichten
6.620
als ik dit doe (als matrix formule):
Code:
SOMPRODUCT(ALS(B2:B4>0;B2:B4;0))
dan wordt netjes eerst B2 met 0 vergeleken enz enz.
maar dat wil ik graag ook met deze (als matrix formule):
Code:
SOMPRODUCT(MAX(0;B2:B4))
kan iemand mij helpen om deze max om de tuin te leiden? zo dat hij ook netjes eerst B2 met 0 vergelijkt ?
 

Bijlagen

Max lijkt me niet van toepassing in sumproduct:

PHP:
=SUMPRODUCT((B2:B4>0)*B2:B4)
 
snb, is het wel mogelijk met max of lukt dat echt niet?

vaak heb je lange formules die dan herhaald moeten worden en dus ook 2 maal berekend.
die B2:B4 zou ook een lange formule kunnen zijn van meerdere regels
 
Laatst bewerkt:
Sylvester,

Bedenk dat de MAX-functie je onder alle omstandigheden slechts één waarde oplevert en geen reeks.
De SOMPRODUCT-functie werkt met één of meerdere reeksen, die eventueel uit één term bestaan.
Derhalve zal, volgens mij, jouw probleem niet opgelost kunnen worden met behulp van de combinatie MAX-SOMPRODUCT. Je wilt volgens mij een reeks getallen als resultaat uit de MAX-functie krijgen.
Wil je af van de matrix-formule, gebruik dan logische operatoren, zoals in de oplossing van snb.
 
het zou zo mooi en snel zijn als ipv
Code:
SUMPRODUCT((A2:A40000*B2:B40000*C2:C40000>0)*(A2:A40000*B2:B40000*C2:C40000)
dit zou kunnen:
Code:
SUMPRODUCT(MAX(A2:A40000*B2:B40000*C2:C40000;0))
 
Laatst bewerkt:
Sylvester,

Dit is misschien ook een oplossing, wel matrixformule:
Code:
=SOM((B2:B4)*(B2:B4>0))
 
Thoralf, normaal geeft de als functie ook maar 1 waarde terug, maar in een matrix formule kan als een reeks weergeven.

ik hoop dat ook zoiets met max kan.

in jouw nieuwe voorbeeld moet ook 2 maal de zelfde reeks doorlopen worden, en dat wil ik voorkomen.
 
Laatst bewerkt:
Dit bedoel je?
Code:
=SOM.ALS(B2:B4;">0")
 
in jouw nieuwe voorbeeld moet ook 2 maal de zelfde reeks doorlopen worden, en dat wil ik voorkomen.
Als je dat wil voorkomen moet je afzien van je streven: van een noodzakelijk voorwaarde kun je nl. niet afzien.
 
Ik zie het ook nergens in je bestandje terug wat je met c2:c4 wilt.
De
Code:
=som.als(d2:d4;">0";c2:c4)
zal je denk ik dan niet bedoelen ?
 
Laatst bewerkt:
De (matrix-)formule is niet korter of sneller maar het bereik wordt iig maar een keer doorlopen.
Code:
=SOM(ALS.FOUT(WORTEL(A2:A9*B2:B9)^2;0))
 
het zou zo mooi en snel zijn als ipv
Code:
SUMPRODUCT((A2:A40000*B2:B40000*C2:C40000>0)*(A2:A40000*B2:B40000*C2:C40000)
dit zou kunnen:
Code:
SUMPRODUCT(MAX(A2:A40000*B2:B40000*C2:C40000;0))
Bij dit voorbeeld vraag ik me af of de individuele kolommen groter moeten zijn dan nul, of de uitkomst van het product?
Bijvoorbeeld -2 x 2 x -2 = 8; wil je dat, of wil je dan 0 x 2 x 0 = 0?
 
Harry: ik bedoel niet =som.als(d2 : d4;">0";c2:c4) maar SOM.ALS(B2:B4*C2:C4;">0") maar deze werkt niet

Timshel: =SOM(ALS.FOUT(WORTEL(A2:A9*B2:B9)^2;0)) geeft wel afrondingsfoutjes, maar die had ik nog niet verzonnen (wortel en ^ zijn wel "zware" fucnties ivm rekenwerk )

Marcel: ik zoek naar " -2 x 2 x -2 = 8"
 
Mijn suggesties zijn nog om het product in een gedefinieerde naam te stoppen, bijv.
Code:
Prd =A2:A40000*B2:B40000*C2:C40000
En dan =SOMPRODUCT((Prd > 0)*Prd)

Of een hulpkolom D met =MAX(A2*B2*C2;0) en dat optellen.
 
Ik ben benieuwd naar je afrondende conclusie van dit draadje.
 
Nog een suggestie á la die van Timshel: deze kun je gebruiken als er sprake is van hele getallen (even rij 2:20 voor het gemak):

Edit: het is een matrixformule: bevestigen met Ctrl+Shift+Enter
Code:
=SOMPRODUCT(ALS.FOUT(AFRONDEN.N.VEELVOUD(A2:A20*B2:B20*C2:C20;1);0))

Uitleg: AFRONDEN.N.VEELVOUD geeft een #GETAL!-fout als je een positief veelvoud (i.c. 1) meegeeft bij een negatief getal.
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan