Vraag & Antwoord

Anders (software)

[excel] probleempje urenverantwoordingsbestand

9 antwoorden
  • Hallo, Nu zit ik weer met een excel-vraagje. Ik ben bezig met een urenverantwoordingsbestand te maken voor het jaar 2003. Dat betekent 52 werkbladen en een overzicht met algemene gegevens, een tijd-voor-tijdoverzicht en een vakantiedagen. Nu ben ik bezig met een formule die alle weekstaten afzoekt of code 850 is ingevuld. Hier worden de vrije dagen op geboekt. In een cel heb ik het volgende staan [code:1:cc41c5308d]=ALS('1'!P10=850;'1'!N10;0)+ALS('1'!P11=850;'1'!N11;0)+ALS('1'!P12=850;'1'!N12;0) etc.[/code:1:cc41c5308d] Het bovenstaande is voor week 1. Week 2 wordt het volgende: [code:1:cc41c5308d]=ALS('2'!P10=850;'2'!N10;0)+ALS('2'!P11=850;'2'!N11;0)+ALS('2'!P12=850;'2'!N12;0)[/code:1:cc41c5308d] De variabelen P10 en N10 lopen op tot P61 en N61. Hoe kan ik de formule zo maken dat hij het voor iedere regel doet vanaf P10 tot en met P61 zonder dat ik het zelf moet intikken van P10 tot P61? Ik kom er niet uit met som.als of vert.zoeken. Gr, DP
  • Die formules kloppen in elk geval niet. Kun je -zonder gebruikmakling van formules - eens uitleggen wat je bv. met die eerste formule wil bereiken?
  • Ik heb de formule ingevoerd en hij werkt. Formule moet eerst kijken of er in cel P10 van week 1 kijken of daar 850 staat. Is dat het geval. Dan moet het aantal opgenomen vakantieuren uit N10 worden overgenomen in het overzicht. Dan wordt in P11 (enz.) van week 1 gekeken of er 850 instaat, zo ja, dan ook het aantal uren uit N11 (enz.) overnemen in het overzicht. In het overzicht komt op de volgende regel hetzelfde te staan maar dan voor week 2. Dus wordt de formule =ALS('2'!P10=850;'2'!N10;0)+ALS('2'!P11=850;'2'!N11;0)+ALS('2'!P12=850;'2'!N12;0). Maar om nu zelf de formule nou helemaal uit te tikken tot =ALS('2'!P10=850;'2'!N10;0)+ALS('2'!P11=850;'2'!N11;0)+ALS('2'!P12=850;'2'!N12;0)+...+ALS('2'!P61=850;'2'!N61;0) vind ik veel werk. Dat is dus de bedoeling.
  • Lijkt op [url=http://forum.computertotaal.nl/phpBB/viewtopic.php?t=78646]deze[/url]
  • Het optellen kun je m.i. beter via som.als doen, dus voor blad1: [size=9:fc50e20199]=SOM.ALS('1'!$P$10:$P$61;850;'1'!$N$10:$N$61)[/size:fc50e20199] Als je deze functie naar beneden kopieert (als je de resultaten van alle weken op 1 blad wil hebben), moet je per functie maar 2 x de naam van het werkblad aanpassen, tegenover 6 x in de functie die je nu gebruikt. Je zou natuurlijk ook een eenvoudig macrootje kunnen maken, die de resultaten onder elkaar plaatst.
  • [quote:7cdd807573="Aimable"] Je zou natuurlijk ook een eenvoudig macrootje kunnen maken, die de resultaten onder elkaar plaatst.[/quote:7cdd807573] Dat bedoelde ik dus: eerste kolom:[code:1:7cdd807573]="som.als('"[/code:1:7cdd807573] tweede kolom:[code:1:7cdd807573]1 t/m 51 vulgrepen[/code:1:7cdd807573] derde kolom:[code:1:7cdd807573]''!P10:P61;850;'[/code:1:7cdd807573] vierde zelfde als tweede vijfde kolom:[code:1:7cdd807573]''!N10:N61)[/code:1:7cdd807573] zesde:[code:1:7cdd807573]=A1&B1&C1&D1&E1[/code:1:7cdd807573] stukjes formule naar beneden vulgrepen, zesde kolom kopieren en plakken als waarde, andere kolommen verwijderen en tenslotte [b:7cdd807573]SOM[/b:7cdd807573] vervangen door [b:7cdd807573]=SOM[/b:7cdd807573]
  • Dat macrootje zou ik dan toch het hele werk laten doen, m.a.w. dat met 1 druk op de knop de resultaten van 52 weken onder elkaar worden geplaatst. Het voordeel van functies in cellen is dan weer dat als de functies eenmaal zijn ingevoerd je de resultaten permanent (zonder druk op de knop) ter beschikking hebt.
  • Zet jij die er dan nog bij?: Fl hep geen kaas gegeten van macrootjes :oops:
  • Nou, vooruit dan maar. De resultaten worden in kolom F van het eerste werkblad geplaatst. Er wordt vanuit gegaan dat de gegevens waarmee wordt gewerkt in de eerste 52 werkbladen staan. Als ook op elk werkblad afzonderlijk het resultaat van de betreffende week vermeld zou staan, zou de macro aanmerkelijk korter kunnen. [size=9:1e3ec2e6d5]Sub optellen() Dim r As Integer, w as integer, t As double For w = 1 to 52 t = 0 For r = 10 to 61 If Worksheets(w).Range("p" & r).Value = 850 Then t = t + Worksheets(w).Range("n" & r).Value End If Next r Worksheets(1).Range("f" & w).Value = t Next w End Sub[/size:1e3ec2e6d5] Zoals hierboven al vermeld: telkens als op 1 van de 52 bladen een wijziging plaatsvindt, moet de macro opnieuw worden uitgevoerd om de totalen op blad 1 bij te werken.

Beantwoord deze vraag

Weet jij het antwoord op deze vraag? Registreer of meld je aan met je account

Dit is een gearchiveerde pagina. Antwoorden is niet meer mogelijk.