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

[EXCEL] flexibele formule voor tijdtotalisatieoverzicht *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hoi,

ik ben met een urenregistratieformulierbezig, nu heb ik per persoon een tabblad aangemaakt en heb ik een totaal uren blad van wat de mensen totaal gewerkt hebben. nu wil ik een formule maken dat als je een blad verwijdert of toevoegd deze automatisch wordt doorgetrokken in het totaalblad. dit is gewoon een op en aftreksometje. maar deze moet dus wel variabelk zijn. ik hoop dat ik hier niet voor naar VBA moet want hier ben ik nog niet echt in thuis. hopelijk kan iemand mij helpen.

Alvast bedankt,

Groeten krijn horsthuis

  • RikTW
  • Registratie: Januari 2004
  • Laatst online: 06:59
Je zou eens naar de functie "INDIRECT" kunnen kijken (engelse versie, ik weet niet wat de nederlandse functienaam is)
Je kunt dan je celreferentie, inclusief naam van het werkblad, geven. Het resultaat is de inhoud van die referentie.

Edit:
Natuurlijk kan ik een macro voor je schrijven, maar dan wil ik wel worden opgenomen in je urenregistratie ;)

[ Voor 20% gewijzigd door RikTW op 01-02-2010 11:33 ]


Verwijderd

Topicstarter
Die functie gaat bij mij niet werken want ik wil dat als ik een nieuwe werknemer toevoeg met zijn eigen werkbald dat deze automatisch opgenomen wordt in het totaalblad. misschien kan iemand hier een macro voor schrijven voor mij :$
alvast bedankt.

  • Rupie
  • Registratie: Augustus 2006
  • Laatst online: 13-11 11:58
Opzich is het niet de bedoeling dat andere mensen VBA scripts voor je gaan maken hoor, al heb je misschien het geluk dat iemand dat voor je wil doen ;)

m.b.t. je probleem: is het niet verstandiger om dit in access te doen? dan kan je dmv een simpele query een overzicht maken zoals jij dat volgens mij wil hebben en dan worden alleen de gegevens van de personen die in de DB staan meegenomen. Zou mij persoonlijk makkelijker lijken dan te gaan proberen om dit in excel op te lossen.

Desktop | Server | Laptop


Verwijderd

het is mogelijk het gewenste te realiseren zonder vba. dat gezegd zijnde, het is eenvoudiger met vba (expermenteer via de macro-opnamefunctie!) of inderdaad eenvoudiger met behulp van een database.
als je persé het flexibele formulepad wil bewandelen, doe het volgende :

- maak een xlm-naam aan die een overzicht maakt van alle tabbladen. deze naam is een horizontale array met alle werkbladnamen, die je transponeert tot een verticale lijst, dit is handiger om mee te werken.
excelmenu > invoegen > naam > definiëren : je geeft deze excelnaam een zelfgekozen naam, bv. "allewerkbladen" (zonder " uiteraard) : verwijst naar : =WERKMAP.LEZEN(1+0*NU())

werkmap.lezen is eigenlijk een xlm macro statement dat dateert van excel 4.0 en lager, maar nog steeds via het naamdefinitiemechanisme of via een macrosheet beschikbaar is. de +0*NU() zorgt ervoor dat de aldus bekomen lijst met werkbladen dynamisch bijgewerkt wordt van zodra er iets op de werkbladen verandert of een werkblad verwijderd wordt.
maak een blanco totaalblad aan waarop je deze formule gaat toevoegen om het totaal gewerkte uren te bekomen. selecteer een voldoende groot aantal rijen, bv. van A1 tem A30, zodat de lijst ook in de toekomst correct bijgewerkt wordt als je personen gaat toevoegen.
met nog steeds al deze rijen geselecteerd, typ je in de eerste cel ervan de matrixformule {=transponeren(allewerkbladen)}. de accolades typ je niet zelf maar worden automatisch geplaatst van zodra je bevestigt met ctrl shift enter ipv enkel de entertoets voor een gewone formule.
indien deze stap correct werd uitgevoerd, heb je nu de lijst van alle werkbladen (1 per rij), met als resultaat #N/B voor (nog) niet bestaande werkbladen.

- nu kan je met de reeds vermelde =indirect functie deze lijst gebruiken om de sommering te doen : indien de totaal gewerkte tijd per persoon zich bv. in cel D4 bevindt van ieder werkblad, geeft volgende formule in cel B1 van het totaalblad de inhoud van blad1 weer : =INDIRECT(A1&"!D4")

- door een sommering van bereik B1:B30 bekom je nu het gewenste totaal aantal uren voor alle personen. (let op met de foutmeldingen van onbestaande werkbladen)

voor dat je verder gaat met vragen stellen : probeer eerst een en ander uit, laat weten waar je vastloopt en dan kunnen we eventueel verder helpen. aan scriptrequestjes doen we niet, zoals je al wist trouwens ;)

Verwijderd

Topicstarter
ik heb het geprobeerd werkt perfect, precies wat ik zoek nu nog een klein vraagje.
Alles werkte goed zoals het aangegeven was, maar het gaat fout zodra ik in de bestandnaam of in de naam van een tabblad een spatie heb staan.
Kun je zowiezo geen spaties toevoegen of kan dit alleen maar m.b.v. bijvoorbeeld een _ ?
De tabbladnamen worden nl. bij ons gewijzigd in de naam van een persoon. Dus met een spatie tussen de voor- en achternaam.

bij voorbaad dank,

Krijn Horsthuis

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Namen met spaties moeten tussen ' en '. Dus =INDIRECT(A1&"!D4") ==> =INDIRECT("'"&A1&"'!D4") :)

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Verwijderd

Topicstarter
hoi jongens heb nog een vraagje voor de beteren onder ons.

- Kun je ook de tabbladen naast elkaar laten zetten. Nu worden ze onder elkaar gezet met TRANSPONEREN. Ik heb daar wel een oplossing voor: een extra tabblad en dan de nieuwe rij transponeren, maar misschien kan het rechtstreeks

groeten krijn

Verwijderd

dit kan je toch logisch afleiden uit m'n post, de werkbladlijst is een horizontale matrix, remember?
selecteer dus bv. b1:j1, voer in de eerste cel met de oorspronkelijke bereikselectie nog steeds actief =allewerkbladen in & bevestig met ctrl shift enter.

Verwijderd

Topicstarter
Top

is gelukt hij doet het nu alleen nog het probleem van de foutmelding bij het gebruik van een spatie in een baldnaam. ookal zet ik deze tussen aanhalingstekens blijft hij de foutmelding geven. iemand nog ideen???

Groeten krijn

[ Voor 104% gewijzigd door Verwijderd op 03-02-2010 14:32 ]

Pagina: 1