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

Inkorten van formule

Status
Niet open voor verdere reacties.

RickJipping

Gebruiker
Lid geworden
17 mei 2013
Berichten
9
Hallo mensen,

Ik ben geen ervaren excel gebruiker, maar heb een lange tijd terug een code geschreven voor een werkrooster.
Het bestand is alleen enorm groot gezien de grote formules.

heeft iemand een idee om de volgende formule in te kunnen korten?

Code:
=AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$5) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$6) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$7) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$8) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$9) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$10) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$11) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$12) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$13) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$14) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$15) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$16) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$17) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$18) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$19) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$20) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$21) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$22) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$23) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$24) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$25) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$26) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$27) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$28) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$29) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$30) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$31) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$32) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$33) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$34) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$35) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$36) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$37) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$38) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$39) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$40) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$41) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$42) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$43) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$44) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$45) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$46) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$47) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$48) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$49) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$50) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$51) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$52) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$53) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$54) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$55) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$56) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$57) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$58) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$59) + AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$60)

Alvast heel erg bericht.

Met vriendelijke groet,
Rick Jipping
 
Is dit iets?
Code:
=somproduct(AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B5:$b60))
 
Wow, dit werkt geweldig!

Zal dit ook voor een code als deze kunnen werken?
Kun je me misschien uitleggen wat deze formule precies doet?

Code:
=SOM(AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$5)*'Leg Tijd'!J$5;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$6)*'Leg Tijd'!J$6;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$7)*'Leg Tijd'!J$7;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$8)*'Leg Tijd'!J$8;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$9)*'Leg Tijd'!J$9;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$10)*'Leg Tijd'!J$10;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$11)*'Leg Tijd'!J$11;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$12)*'Leg Tijd'!J$12;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$13)*'Leg Tijd'!J$13;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$14)*'Leg Tijd'!J$14;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$15)*'Leg Tijd'!J$15;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$16)*'Leg Tijd'!J$16;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$17)*'Leg Tijd'!J$17;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$18)*'Leg Tijd'!J$18;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$19)*'Leg Tijd'!J$19;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$20)*'Leg Tijd'!J$20;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$21)*'Leg Tijd'!J$21;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$22)*'Leg Tijd'!J$22;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$23)*'Leg Tijd'!J$23;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$24)*'Leg Tijd'!J$24;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$25)*'Leg Tijd'!J$25;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$26)*'Leg Tijd'!J$26;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$27)*'Leg Tijd'!J$27;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$28)*'Leg Tijd'!J$28;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$29)*'Leg Tijd'!J$29;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$30)*'Leg Tijd'!J$30;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$31)*'Leg Tijd'!J$31;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$32)*'Leg Tijd'!J$32;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$33)*'Leg Tijd'!J$33;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$34)*'Leg Tijd'!J$34;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$35)*'Leg Tijd'!J$35;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$36)*'Leg Tijd'!J$36;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$37)*'Leg Tijd'!J$37;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$38)*'Leg Tijd'!J$38;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$39)*'Leg Tijd'!J$39;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$40)*'Leg Tijd'!J$40;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$41)*'Leg Tijd'!J$41;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$42)*'Leg Tijd'!J$42;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$43)*'Leg Tijd'!J$43;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$44)*'Leg Tijd'!J$44;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$45)*'Leg Tijd'!J$45;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$46)*'Leg Tijd'!J$46;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$47)*'Leg Tijd'!J$47;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$48)*'Leg Tijd'!J$48;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$49)*'Leg Tijd'!J$49;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$50)*'Leg Tijd'!J$50;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$51)*'Leg Tijd'!J$51;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$52)*'Leg Tijd'!J$52;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$53)*'Leg Tijd'!J$53;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$54)*'Leg Tijd'!J$54;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$55)*'Leg Tijd'!J$55;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$56)*'Leg Tijd'!J$56;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$57)*'Leg Tijd'!J$57;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$58)*'Leg Tijd'!J$58;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$59)*'Leg Tijd'!J$59;AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$60)*'Leg Tijd'!J$60)
 
Of (alternatief voor post#2):
Code:
=SOM(AANTAL.ALS($H21:$AL21;'Leg Tijd'!$B$5:$B$60))

matrix-formule: afsluiten met Control+Shift+Enter dus
 
Laatst bewerkt:
Ook de matix formule werkt, welke van de twee kun je het beste gebruiken of maakt dat weinig uit?
 
Kwestie van smaak, er zijn meerdere wegen die naar Rome leiden.

Wat een draak van een formule in #3 trouwens.... je vroeg wat deze deed. Er staan heel veel AANTALLEN.ALS functies waarvan de uikomsten opgeteld worden middels de SOM. Bijvoorbeeld:
Code:
=AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$5)*'Leg Tijd'!J$5
Wil zeggen: het aantal keer dat de waarde AR$14 voorkomt in het bereik $F$14:$AJ$14 EN de waarde uit 'Leg Tijd'!$B$5 in bereik $F17:$AJ17. Dit gebeurt dan 60x of zo, en het totaal wordt opgeteld. Maar dan krijg je dus wel een HELE lange formule (en een trage computer).
 
Laatst bewerkt:
Kwestie van smaak, er zijn meerdere wegen die naar Rome leiden.

Wat een draak van een formule in #3 trouwens.... je vroeg wat deze deed. Er staan heel veel AANTALLEN.ALS functies waarvan de uikomsten opgeteld worden middels de SOM. Bijvoorbeeld:
Code:
=AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;'Leg Tijd'!$B$5)*'Leg Tijd'!J$5
Wil zeggen: het aantal keer dat de waarde AR$14 voorkomt in het bereik $F$14:$AJ$14 EN de waarde uit 'Leg Tijd'!$B$5 in bereik $F17:$AJ17. Dit gebeurt dan 60x of zo, en het totaal wordt opgeteld. Maar dan krijg je dus wel een HELE lange formule (en een trage computer).

Dat begrijp ik, ik wist geen andere manier,
deze formule telt op hoeveel ORT er over de gewerkte dienst gaat en op welke dag dit is, zo loopt hij elke dienst bij langs om dit + te doen.

Mijn ervaring in excel is helaas te laag hiervoor, mochten jullie een oplossing en/of tip hebben om eens naar te kijken hoor ik deze heel graag.
 
Probeer deze eens:
Code:
=SOM(AANTALLEN.ALS($F$14:$AJ$14;AR$14;$F17:$AJ17;B5:B60)*J5:J60)

Ook matrix-formule, dus weer afsluiten met Control+Shift+Enter.

PS matrix-formules doen precies wat jij helemaal uitgetypt hebt... :D
 
Laatst bewerkt:
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan