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

Formule te lang (meer dan 8192 tekens) bij staffelberekening

Status
Niet open voor verdere reacties.

oceanrace

Gebruiker
Lid geworden
14 mei 2008
Berichten
198
Goedendag,
Ik zit met het volgende probleem:
Mijn formule voor het cumulatief berekenen van waarden wordt te lang, namelijk zo'n 15000 tekens één formule terwijl maximaal 8192 is toegestaan.

Ter verduidelijking wat de formule doet:
De waarde wordt cumulatief berekend, dus 0‐100 waarde X, 100‐200 waarde Y etc. De
waarden van X, Y etc. worden vervolgens opgeteld.

Zie voorbeeld, met goed werkende korte versie van de formule.
 

Bijlagen

Laatst bewerkt:
Hallo JeanPaul28,
De waarde wordt cumulatief berekend, dus 0‐100 waarde X, 100‐200 waarde Y etc. De
waarden van X, Y etc. worden vervolgens opgeteld.
 
met vba:
Code:
Function DoorTellen(Aantal As Long, OppervlakteLijst As Range, PrijsLijst As Range) As Double
Dim Teller As Long, Temp As Range
For Teller = 2 To OppervlakteLijst.Cells.Count
    Set Temp = OppervlakteLijst(1, Teller)
    If Aantal > Temp Then
        DoorTellen = DoorTellen + (Temp - Temp(1, 0)) * PrijsLijst(1, Teller - 1)
    Else
        Exit For
    End If
Next Teller
DoorTellen = DoorTellen + (Aantal - Temp(1, 0)) * PrijsLijst(1, Teller - 1)
End Function
 

Bijlagen

Laatst bewerkt:
verander:
Code:
For Teller = 2 To OppervlakteLijst.Cells.Count
in
Code:
For Teller = 2 To OppervlakteLijst.Cells.Count + 1
 
Hallo Sylvester,
Ik ben je ontzettend dankbaar, wat een geweldige functie!
Deze kan ik voor meerdere doeleinden gebruiken.
Hoewel ik het nog wel wat lastig vind om te begrijpen hoe hij precies werkt doet hij precies wat hij moet doen.
Bedankt.
 
Laatst bewerkt:
ik had van ochtend niet zo veel tijd.

deze function is netter en er staat uitleg bij:
Code:
Function DoorTellen(Aantal As Long, OppervlakteLijst As Range, PrijsLijst As Range) As Double
Dim Teller As Long, Temp As Range
'eerst alle hele blokjes
For Teller = 1 To OppervlakteLijst.Cells.Count 'teller wordt steeds met 1 verhoogt tot deze loop verlaten wordt
    Set Temp = OppervlakteLijst(1, Teller) 'temp wijst nu in de oppervalktelijst naar vakje teller
    If Aantal > Temp(1, 2) Then  'temp(1,2) wijst naar de naast gelegen cel
        DoorTellen = DoorTellen + (Temp(1, 2) - Temp) * PrijsLijst(1, Teller) 'het gebiedje wordt er bij geteld
    Else
        Exit For    'als aantal niet groter is dan temp(1,2) dan de loop verlaten
    End If
Next Teller
DoorTellen = DoorTellen + (Aantal - Temp) * PrijsLijst(1, Teller) 'en het restje
End Function
 
Dankje, ik denk dat het ook lastig is om dit met een formule op te lossen.
Op deze manier is het aantal staffels (of knikpunten) in principe onbeperkt.
De uitleg is helder!
 
Beste Sylvester,
Ik vroeg me nog af of er ook een mogelijkheid was om tussenliggende lege cellen "over te slaan".
Nu klopt de eindwaarde niet wanneer er tussenliggende staffels leeg zijn of een 0 bevatten.
Ik heb dit nu met formules opgelost, maar misschien dat het ook in jou function kan
 
Laatst bewerkt:
Het kan ook gewoon met een formule:

in C8:

Code:
=INDEX($F8:$AT8;1;MATCH($B8;$F$7:$AT$7;1)-1)*INDEX($F$7:AT$7;MATCH($B8;$F$7:$AT$7;1))

en doortrekken naar beneden.
 
Bedankt snb,
Ben benieuwd of de formule ook sneller werkt dan de VBA oplossing.
 
Laatst bewerkt:
bedoel je met een lege cel een copy van de voorgaande?

Ja dat is wat ik bedoel, in voorbeeld 5 gaat dit nog niet helemaal goed.
Alle waarden (type 1 t/tm 5) zouden in dit voorbeeld dezelfde prijs moeten krijgen bij elke gevulde oppervlakte.
 
voorbeeld 5 zie ik niet ik zie Type 1 tm 4
wil je voorbeeld 5 toevoegen?
die aflopende waarden van de prijzen, is daar een functie voor? of is dat handwerk?
en de oplopende waarden van de oppervlakten?
 
Laatst bewerkt:
Sorry, ik bedoelde het nummer van de bijlage.
Type 1 t/m 4 zouden dezelfde prijs moeten krijgen.
 
in type1 van post 16 staan hele andere prijzen in dan in type 2 tm 4
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan