Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

[Excel] Laagste getallen in rij nemen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik zit hier met het volgende probleem.

Ik heb hier 8 rijen die gevuld kunnen zijn met een waarde.

Nou wil ik een formule die de waarde bekijkt van de laagste X aantal getallen per rij...
En het moet een beetje automatisch gaan.
Hoe je de laagste of hoogste uit een rij vist weet ik, maar hoe pak je de laatste X uit een rij... (Waarbij X dus bijvoorbeeld 3 is)

  • Kanivan
  • Registratie: Januari 2002
  • Laatst online: 09-04-2023
en wat moet er met deze laagste X getallen gebeuren? de functie SMALL(reeks, N) geeft het Ne laagste getal van de reeks weer.

[ Voor 41% gewijzigd door Kanivan op 07-11-2008 16:37 ]


  • Elektronicanet
  • Registratie: December 2001
  • Laatst online: 28-11 22:16

Elektronicanet

Leds do it!

Kijk eens naar de SMALL() functie
Of in het nederlands: KLEINSTE() :)

[ Voor 36% gewijzigd door Elektronicanet op 07-11-2008 16:40 ]

Nederlander in België


Verwijderd

Topicstarter
Maar hoe kan je dan de X laagste getallen pakken...
Als je zeker weet dat X 4 is, zet je gewoon Small+Small+Small+Small neer (Even simpel gezegd)
Maar nu wil ik dus dat 4 door X, en dan wordt het veel moeilijker....

Verwijderd

zet gewoon 8 keer kleinste ingebed in een als-formule die test op X, in een andere cel de X waarde (bv. in cel D1): (ongetest)
code:
1
2
3
=als(d1>0;kleinste(a1:a8;1);"")
=als(d1>1;kleinste(a1:a8;2);"")
...
met in D1 6 zal je de 6 kleinste waarden bekomen, de twee laatste cellen blijven leeg.

Verwijderd

Topicstarter
Heb het maar anders opgelost, beetje omslachtig maar het werkt...

Dan nog even een kort vraagje, die Factor X staat nu in een veld vermeld, die moet voor alle formules in de rijen gelijk blijven, maar nu nummert hij ook dit veld mee, als ik de formule naar alle rijen sleep. Kan je dit ook vastzetten?

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Heb het maar anders opgelost, beetje omslachtig maar het werkt...
Omdat GoT geen helpdesk maar forum is waar anderen graag meeleren: hoe dan? :P

Je korte vraagje: zie wat $ doet.

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
Zo :-P

code:
1
F(COUNT(D2:P2)>6;IF(COUNT(D2:P2)=7;SUM(D2:P2)-LARGE(D2:P2;1);IF(COUNT(D2:P2)=8;SUM(D2:P2)-LARGE(D2:P2;1)--LARGE(D2:P2;2);IF(COUNT(D2:P2)=9;SUM(D2:P2)-LARGE(D2:P2;1)-LARGE(D2:P2;2)-LARGE(D2:P2;3))));SUM(D2:P2))


Je tip met $ werkt helaas niet, veld staat in ander tabblad:
Volgende formule werkt dus niet:
code:
1
=IF((COUNT(D2:P2))>$Variabelen.$B2;$Variabelen.$B2;(COUNT(D2:P2)))


Opgelost:
code:
1
=IF((COUNT(D2:P2))>$Variabelen.$B$2;$Variabelen.$B$2;(COUNT(D2:P2)))


:-P

[ Voor 42% gewijzigd door Verwijderd op 07-11-2008 18:14 ]


Verwijderd

Topicstarter
Nog een beetje mooier gemaakt, nu haalt hij de maximale waarde uit aparte cel:

code:
1
=IF(COUNT(D2:P2)>$Variabelen.$B$2;IF(COUNT(D2:P2)-$Variabelen.$B$2=1;SUM(D2:P2)-LARGE(D2:P2;1);IF(COUNT(D2:P2)-$Variabelen.$B$2=2;SUM(D2:P2)-LARGE(D2:P2;1)-LARGE(D2:P2;2);IF(COUNT(D2:P2)-$Variabelen.$B$2=3;SUM(D2:P2)-LARGE(D2:P2;1)-LARGE(D2:P2;2)-LARGE(D2:P2;3);IF(COUNT(D2:P2)-$Variabelen.$B$2=4;SUM(D2:P2)-LARGE(D2:P2;1)-LARGE(D2:P2;2)-LARGE(D2:P2;3)-LARGE(D2:P2;4);IF(COUNT(D2:P2)-$Variabelen.$B$2=5;SUM(D2:P2)-LARGE(D2:P2;1)-LARGE(D2:P2;2)-LARGE(D2:P2;3)-LARGE(D2:P2;4)-LARGE(D2:P2;5))))));SUM(D2:P2))


Wat een formule ook :-)

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Ik weet niet wat je nu precies wil, maar als je bijvoorbeeld de som van de 3 laagste getallen wil hebben in range A1:A5 dan kun je dat zo doen:
code:
1
{=SUM(SMALL(A1:A5,{1,2,3}))}

(array formule, ctrl-shift-enter bij invoeren, stukje tussen eerste { & laatste } kopieren&plakken)
Of met 3 makkelijk invulbaar:
code:
1
{=SUM(SMALL(A1:A5,ROW(OFFSET($A$1,0,0,3))))}

[ Voor 71% gewijzigd door pedorus op 07-11-2008 23:42 ]

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Topicstarter
Bij de tweede oplossing zit ergens een fout, als het werkt is het wel een beetje (Beetje maar hoor) mooiere oplossing....

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Als het gaat om som van de kleinste k getallen lijkt me dit de eenvoudigste oplossing:
code:
1
=SOM.ALS(A1:A10;"<= " &  KLEINSTE(A1:A10;B2))

waarbij A1:A10 de op te tellen getallen bevatten en B2 de waarde voor k.

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op zaterdag 08 november 2008 @ 00:38:
Bij de tweede oplossing zit ergens een fout, als het werkt is het wel een beetje (Beetje maar hoor) mooiere oplossing....
Wellicht dat je "$A$1" hebt veranderd naar het eerste veld van je echte reeks. Als die reeks niet op de eerste rij staat gaat het mis... :)
Of misschien bij het invoeren. Je voert dus in:
code:
1
=SUM(SMALL(A1:A5,ROW(OFFSET($A$1,0,0,3))))

En drukt dan op ctrl-shift-enter. Als je gewoon enter doet, krijg je de kleinste waarneming terug, ipv de kleinste 3.

@Lustucru: dat gaat mis bij gelijke waarden.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Klopt :)

Ik moest even kijken wat die rij(verschuing()) in jouw formule nu precies deed, maar die genereert dus de matrx {1/2/3}. Mooi gevonden, maar imho toch een tikje ranzig. Qua hergebruik en leesbaarheid geef ik in dit soort gevallen toch de voorkeur aan een voorwaardelijke som op de rang, omdat dan de formule overeenkomt met de probleemstelling en het vaste patroon van een voorwaardelijke som. :)

Met Excel 2k7 kan dat makkelijker omdat som.als() is uitgebreid, maar iig in 2k3 doet deze het ook:

code:
1
{=SOM(ALS(RANG(A$1:A$10;A$1:$A$10;1)<=$B$2;$A$1:$A$10;0))}

In spreektaal: tel de getallen in a1:a10 bij elkaar op, als ze tenminste voldoen aan de voorwaarde dat hun rang in de reeks kleiner is dan B2. :)

edit:
o crap, dit faalt ook op dubbele waarden, as said

[ Voor 14% gewijzigd door Lustucru op 08-11-2008 12:21 ]

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


  • pedorus
  • Registratie: Januari 2008
  • Niet online
Lustucru schreef op zaterdag 08 november 2008 @ 10:42:
code:
1
{=SOM(ALS(RANG(A$1:A$10;A$1:$A$10;1)<=$B$2;$A$1:$A$10;0))}
En je hebt nu bijna mijn eerste post terug voor ik hem compleet omgooide. Had ik natuurlijk moeten laten staan ipv het weg te editen :) Daar stond iets als:
code:
1
{=SUM((RANK(A$1:A$10,A$1:$A$10,1)<=3)*$A$1:$A$10)}

En dat ging ook mis op een rijtje met dezelfde waarnemingen.

Maar deze versie is misschien wat meer foolproof:
code:
1
=SUMPRODUCT(SMALL(A$1:A$10,ROW(INDIRECT("1:"&3))))

Je kan dan niet per ongelijk ctrl-shift-enter vergeten, en er staat geen gekke $A$1 in. ROW(INDIRECT(...)) blijft een beetje gek, maar daar weet ik geen andere truc voor.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Topicstarter
Vreemd genoeg krijg ik bij al jullie oplossingen gewoon een dikke error, zowel in Excel, als bij Open Office...
Nouja, het werkt nu in ieder geval, misschien niet de mooiste manier, maar goed

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Verwijderd schreef op zaterdag 08 november 2008 @ 19:27:
Vreemd genoeg krijg ik bij al jullie oplossingen gewoon een dikke error, zowel in Excel, als bij Open Office...
Nouja, het werkt nu in ieder geval, misschien niet de mooiste manier, maar goed
Als ik naar jouw formules kijk, dan zie ik dat je een vreemde combinatie hebt van een EN-Excel (Engelse functienamen) met Nederlandse Windows-taalinstellingen (Scheidingsteken ";"). Dit betekend dat je bij mijn Engelse formules "," in ";" moet veranderen (en "." in ","). Bij Nederlandse formules zoals die van Lustucru moet je de bijbehorende Engelse functienamen zoeken. In alle gevallen dus een onhandige combinatie :)

[ Voor 4% gewijzigd door pedorus op 09-11-2008 16:07 ]

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Topicstarter
pedorus schreef op zaterdag 08 november 2008 @ 12:02:
[...]

Maar deze versie is misschien wat meer foolproof:
code:
1
=SUMPRODUCT(SMALL(A$1:A$10,ROW(INDIRECT("1:"&3))))
Dit geeft dus wel een error als er minder dan 3 getallen zich bevinden....

Ik heb het nu zo opgelost, maar misschien is er nog een mooiere manier:
code:
1
=IF(COUNT(Uitslag!D3:P3)<Variabelen!$C$2;SUM(D3:P3);SUMPRODUCT(SMALL(D3:P3;ROW(INDIRECT("1:"&Variabelen!$C$2)))))
Pagina: 1