Vraag


Acties:
  • 0 Henk 'm!

Anoniem: 620105

Topicstarter
Hoi,

[Ik kon nog niks vergelijkbaars vinden, mocht dat er toch zijn, wijs me er gerust op...]


Ik wil graag iets voor elkaar krijgen in excel (evt met vba, al heb ik geen verstand van het schrijven van macro's) wat me maar niet lukt..

Ik heb een kolom met verschillende getallen onder elkaar en ik wil dat deze worden opgeteld tot een bepaald maximum (in mijn geval 450) en dat de restwaarde (dus als het laatste getal ervoor zorgt dat het 458 wordt dan die laatste 8 ) weer wordt meegenomen in de volgende optelling tot weer 450 in de cel eronder....

De optelling zelf mag zichtbaar zijn in de cel waar de formule in komt te staan als hij maar tot dat maximum gaat en niet verder. Of er mag gewoon een uitslag 'behaald' oid worden gegeven als de eerste 450 is gehaald en in de volgende cel voor de volgende 450 (mits de restwaarde ook meegaat). Dat maakt op zich niet uit.

Ik heb wel gevonden hoe hij aangeeft na hoeveel waarden dat getal is bereikt, maar dan neemt hij de rest niet mee en ik heb liever dat hij aangeeft dát het bereikt is en nog liever gewoon het opgetelde getal. Daarnaast kan ik ook in 1 cel gewoon laten optellen met voorwaarde en dan in een andere laten delen door 450 en als dat 1 is dan uitslag geven, maar dan doet hij niks met restwaarde en telt volgens mij tot en niet over het maximum.. help..

Iemand ideeën???

Alvast super bedankt voor het meedenken..


Relevante software en hardware die ik gebruik: Excel 2013, Windows 2010
Wat ik al gevonden of geprobeerd heb: formule =Vergelijken met verticaal zoeken, maar dan geeft hij het aantal getallen wat past en geen uitkomst of rest. Dus ik denk niet dat ik deze kan uitbouwen.
...

Alle reacties


Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Dit kan je volgens mij eenvoudig doen met drie klommen. Getal, Som en Rest. In som tel je elke keer het huidige getal bij het vorige getal op tot je op 450 zit. In Rest zet je de rest waarde zodra je bij 450 bent.
In Som ga je na 450 weer bij 0 beginnen en tel je de rest waarde er bij op. Dat kan met een paar if statements gedaan worden.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

Anoniem: 620105

Topicstarter
Thanks! Maar in dat geval moet ik zelf nog altijd steeds opnieuw die functie in gaan vullen als hij bij 450 is... Ik wil eigenlijk dat dat allemaal automatisch gaat.. En is er een formule om de rest te berekenen? Ik wil het liefst en zelf werkend systeem waarbij ik alleen de getallen zelf in hoef te vullen en een uitslag kan zien.

Acties:
  • 0 Henk 'm!

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Ik denk dat je met als() en rest() in een hulkolom een eind kan komen.

Als de som van de cel links plus de cel boven kleiner of gelijk is aan 450, dan de som. Anders de som rest 450. (Of simpelweg de som min 450).

Althans, als ik me zo zonder voorbeeldberekeningen goed begrijp.

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


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Nu online
Kun je een voorbeeld geven van de gewenste output?
     A     B
1   225   
2   230   450
3   255
4   100
5    90   450

zoiets?

Acties:
  • 0 Henk 'm!

  • ajakkes
  • Registratie: Maart 2004
  • Laatst online: 04-05 14:59

ajakkes

👑

Volgens mij mag de som kolom gewoon doorlopen. En wil je slechts weten welke regel er voor zorgt dat de 450 weer overschreden wordt. Dus als de som/450 naar beneden afgerond hoger is als de som/450 naar beneden afgerond op de regel erboven.

👑


Acties:
  • 0 Henk 'm!

  • breew
  • Registratie: April 2014
  • Nu online
Ik zou zeggen, verdiep je eens in VBA.. het is leuk om dit soort (eenvoudige?) vraagstukjes op te lossen door zelf iets te programmeren (of code van anderen te begrijpen en aan te passen)...
Kan altijd nog eens van pas komen.. de logica is vrij simpel..

Visual Basic:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
Option Explicit

Sub OpNaarDe450()

'declaraties
Dim c As Range       'cellen uit het geselecteerde bereik
Dim lonSom As Long   'som van opgetelde celwaarden (moeten hele getallen zijn)

'initialiseren van de waarde van de som
lonSom = 0

'loop door alle cellen in een geselecteerd bereik
For Each c In Selection
  'som = oude waarde + celwaarde
  lonSom = lonSom + c.Value
  'als de waarde groter of gelijk is aan 450, dan
  If lonSom >= 450 Then
    'zet 450 in de cel rechts naast de huidige cel
    c.Offset(0, 1).Value = 450
    'haal 450 af van het totaal, ga verder met de rest
    lonSom = lonSom - 450
  End If
'stap door naar de volgende cel
Next c

End Sub

Acties:
  • 0 Henk 'm!

  • TomsDiner
  • Registratie: November 2014
  • Laatst online: 00:00
Ik plaats in cel A2 de volgende formule als test: =ASELECTTUSSEN(100;399)

Deze kopieer ik 100x naar beneden. Dat zorgt voor een reeks willekeurige getallen vanaf A2 naar beneden.

In cel B2 zet ik de volgende formule: =REST((B3+A4); 450)

Deze kopieer ik ook 100x naar beneden. Deze formule houdt de optelling bij, en verlaagt met 450 indien het getal groter is.

In cel C2 zet ik de volgende formule neer: =ALS(B1+A2>450;TEKST.SAMENVOEGEN("Grens bereikt. Restwaarde = ";B2);"")

(Ook doorkopieren) Deze formule laat niets zien als het een niet door de grens gaande optelling is. Anders wordt in de kolom C de volgende tekst getoond: "Grens bereikt. Restwaarde =231"

Ik begin op rij 2, omdat de formule op zoek gaat naar het restgetal in de rij erboven. Die cel moet dus geen tekst bevatten of niet bestaan, anders krijg je een foutmelding.

Acties:
  • 0 Henk 'm!

  • Tsurany
  • Registratie: Juni 2006
  • Niet online

Tsurany

⭐⭐⭐⭐⭐

Anoniem: 620105 schreef op maandag 20 november 2017 @ 20:42:
Thanks! Maar in dat geval moet ik zelf nog altijd steeds opnieuw die functie in gaan vullen als hij bij 450 is... Ik wil eigenlijk dat dat allemaal automatisch gaat.. En is er een formule om de rest te berekenen? Ik wil het liefst en zelf werkend systeem waarbij ik alleen de getallen zelf in hoef te vullen en een uitslag kan zien.
Nee, als je if else statements gebruikt kan je dit gewoon automatiseren.

SMA SB5.0 + 16x Jinko 310wp OWO + 10x Jinko 310wp WNW |--|--| Daikin 4MXM68N + 1x FTXA50AW + 3x FTXM20N


Acties:
  • 0 Henk 'm!

Anoniem: 620105

Topicstarter
breew schreef op maandag 20 november 2017 @ 21:49:
Kun je een voorbeeld geven van de gewenste output?
     A     B
1   225   
2   230   450
3   255
4   100
5    90   450

zoiets?
Ja! Dat is inderdaad hoe ik het wil hebben (:

Ik ga me inderdaad eens verdiepen in vba want het lijkt me heel leuk om te kunnen! Ik zal vanavond eens in je macro duiken en kijken of ik er wat van kan maken.


@Tsurany Ik ga eens kijken hoe die if statements precies werken want dat heb ik geloof ik nooit op die manier voor elkaar gekregen xd.

@TomsDiner Als ik precies dat wat jij doet invul, maar dan met in kolom a2 enz mijn eigen waardes dan krijg ik toch iets heel anders....
80 333
120 300 Grens bereikt. Restwaarde = 300
33 255
45 145
110 56
89 0
56 0

Geen idee wat ik dan fout doe ?


Bedankt allemaal voor het meedenken!! Ik ga er vanavond weer even aan puzzelen en dan laat ik weer van me horen!

Acties:
  • 0 Henk 'm!

  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Er zitten een paar foutjes in de post van @TomsDiner :)

Als je het probleem uitschrijft wordt het duidelijker:'

Tel getallen bij elkaar op. Als de optelling groter is dan 450 geef 450 weer. Was dit bij de vorige optelling het geval neem dan de rest van de optelling. In formulevorm vanaf B2 naar beneden:

code:
1
=als(b1=450;rest(som(A$1:A2);450);MIN(B1+A2;450))

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

Pagina: 1