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

planning maken d.m.v een draaitabel.

Status
Niet open voor verdere reacties.

ronsom

Gebruiker
Lid geworden
6 mrt 2012
Berichten
232
Goedemorgen,

Ik probeer een planning te maken en deze aan een draaitabel te koppelen. Dit lukt wel als ik mijn bron heb zoals in de bijlage tabel 5 eruit ziet.
Deze tabel heb ik zelf opgezet als voorbeeld.
Echter de echte bron ziet er anders uit. Tabel 4 laat de echte bron zien. Dus een naam en 2 data. Tussen de 2 data is de persoon dus op vakantie.
Ik wil graag een manier om de bron van tabel 4 om te zetten zodat ik hier vandaan een zelfde draaitabel kan maken als zoals die in het voorbeeld (draaitabel 1).
Weet iemand hoe ik dit kan bereiken??
 

Bijlagen

  • Map4.xlsx
    18,6 KB · Weergaven: 62
Dan zal je de tabel op moeten splitsen. Het resultaat komt in sheet1

Code:
Sub VenA()
  Dim t As Long, j As Long, jj As Long, ar
  ar = Sheets("Blad2").ListObjects(1).DataBodyRange
  ReDim ar1(2, 0)
  For j = 1 To UBound(ar)
    For jj = CDate(ar(j, 2)) To CDate(ar(j, 3)) - 1
      ar1(0, t) = ar(j, 1)
      ar1(1, t) = Format(jj, "mm-dd-yyyy")
      ar1(2, t) = "afwezig"
      t = t + 1
    ReDim Preserve ar1(2, t)
    Next jj
  Next j
  With Sheets("Sheet1").ListObjects(1)
    If .ListRows.Count Then .DataBodyRange.Delete
    .ListRows.Add.Range.Resize(t, 3) = Application.Transpose(ar1)
  End With
End Sub
 

Bijlagen

  • Map4.xlsb
    23,8 KB · Weergaven: 47
Met een draaitabel lukt het mij niet, maar wel met gewone formules.
Het probleem is wel om de tijdschaal voldoende breed te maken.
Dat blijft handwerk of je zou een macro kunnen gebruiken. (ik zie net dat VenA me voor was:))
 

Bijlagen

  • Map4(pcb).xlsx
    33,3 KB · Weergaven: 35
Laatst bewerkt:
@Piet Bom,

Excel heeft voor datums ook de functie Datevalue.
Dus ipv
Code:
=DATE(VALUE(LEFT(R4;4));VALUE(MID(R4;6;2));VALUE(RIGHT(R4;2)))
Kan je ook dit gebruiken
Code:
=DATEVALUE(R4)
Scheelt weer wat typen.:d
 
@VenA,
Dat is inderdaad veel korter en werkt goed.:thumb:
Ik dacht dat die funktie bedoeld was om een tekststring die op een gewone datum lijkt om te zetten naar een echte datum voor Excel.
Ik vond de gebruikte datum-notatie niet op een gewone datum lijken, maar bij nader inzien is het wel een datum-notatie maar dan achterstevoren.
Zo zie je maar weer dat Excel toch slimmer is dan wat we soms denken :)
Bedankt voor de tip.
 
En zo leren we ieder keer weer wat van elkaar.:d
 
Hallo Vena en Piet,

Hartelijk bedankt voor jullie reacties.
Vena, jou antwoord sluit helemaal aan op het gene wat ik zoek.
Ik ga hiermee verder.
Hartelijke dank!!
 
@ allemaal(VeNa)

Ik heb met behulp van VeNa een code ontvangen die mij prima helpt met de volgende vraag.
Maar eigenlijk wil ik vragen of er iets extra's toegevoegd kan worden aan de tabel zoals de code van VeNa hem wegschrijft.
Is het mogelijk om ook de datum van de vaste vrije dag toe te voegen.
In de tabel heb ik een kolom toegevoegd met daarin de vaste vrije dag van de persoon.
Kan deze datum ook meegenomen worden in de tabel?
Als iemand mij hiermee kan helpen vind ik dat fijn, als dat niet gaat dan ben ik al blij met het resultaat van VeNa
 

Bijlagen

  • Map4 (1).xlsb
    23,3 KB · Weergaven: 43
Wat is de verwachte uitkomst dan? Een vaste vrije dag lijkt mij persoonsgebonden en heeft weinig met de periode van afwezigheid te maken tenzij je deze uit de tabel wil elimineren.

Om het verschil aan te geven tussen en standaard vrije dag en andere afwezigheid kan je zoiets gebruiken.

Code:
Sub VenA()
  Dim t As Long, j As Long, jj As Long, ar
  ar = Sheets("Blad2").ListObjects(1).DataBodyRange
  dag = Split("maandag dinsdag woensdag donderdag vrijdag zaterdag zondag")
  'dag = Application.GetCustomListContents(2) 'is afhankelijk van de taalinstellingen
  ReDim ar1(2, 0)
  For j = 1 To UBound(ar)
    For jj = CDate(ar(j, 2)) To CDate(ar(j, 3)) - 1
      ar1(0, t) = ar(j, 1)
      ar1(1, t) = Format(jj, "mm-dd-yyyy")
      ar1(2, t) = IIf(Weekday(jj, 0) = Application.Match(ar(j, 4), dag, 0), "Standaard vrij", "afwezig")
      t = t + 1
    ReDim Preserve ar1(2, t)
    Next jj
  Next j
  With Sheets("Sheet1").ListObjects(1)
    If .ListRows.Count Then .DataBodyRange.Delete
    .ListRows.Add.Range.Resize(t, 3) = Application.Transpose(ar1)
  End With
End Sub
 
Hallo VeNa,

Bedankt voor je reactie, je vraagt wat dan precies de verwachte uitkomst is.
Is het mogelijk om in dezelfde tabel voor Jan alle woensdagen die hij vrij is toe te voegen, dus ook de woensdagen tussen de afwezigheid die er al staat.
Bijv de woensdagen tussen 12-1-2020 en 6-4-2020 etc.etc.
 
Probeer het zelf eens. De meeste ingrediënten staan al in de code in #9
 
of
Code:
Sub M_snb()
   dag =[transpose(text(row(1:7),"[$-413]dddd"))]
End Sub
 
Laatst bewerkt:
Hallo VeNa,

Geloof het of niet maar ik heb vandaag echt geprobeerd om iets te doen met je code uit #9.
Ik begrijp echt wel wat er in de code staat maar en iets aan veranderen zodat ik ook de data tussen de vakantie data kan vinden lukt me niet.
Dank je wel voor je hulp!!
 
Je kreeg een foutmelding? Of het resultaat kwam niet overeen met wat je wilt? Plaats het bestandje met de mislukte pogingen maar even dan wordt je mogelijk wel verder geholpen.
 
Hallo VeNa,

Nou dat is veel nadenken en eigenlijk tot niets komen. In mijn beleving moet er een kolom bij komen die de datums aangeeft wanneer in dit geval Jan wel aanwezig is.
Dat heb ik in de bijlage wel gedaan maar dat is zeker nog niet goed genoeg. Daarnaast moet er in de code ook een aanpassing komen die weer naar deze datums kijkt.
Ik kom niet verder dan dat.
Ik heb wel veel vragen, kan deze code ook tussen de aanwezigheid de datums wegschrijven, de huidige code kijkt naar de datum in kolom 2 en 3 en schrijft dit dan weg maar dit gaat dan om afwezigheid en niet om aanwezigheid.
 

Bijlagen

  • Map4 (1) (1).xlsb
    27,2 KB · Weergaven: 38
Status
Niet open voor verdere reacties.
Steun Ons

Nieuwste berichten

Terug
Bovenaan Onderaan