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

Opmaak overzicht aanpassen

Status
Niet open voor verdere reacties.

carlocarlo

Gebruiker
Lid geworden
14 apr 2009
Berichten
122
Dagelijks krijg ik uit een systeem een Excel uitdraai over de planning van zo'n 80 personen (zie in bijgaand Excelbestand de kolommen A t/m L). Dit bestand wil ik weer koppelen aan een ander bestand. Om de koppeling mogelijk te maken moet het overzicht er anders uit zien (zie kolom O t/m R als voorbeeld). Ik zou dat graag ook voor de andere medewerkers willen zien.
Weet iemand daar een handige oplossing/macro voor?
 

Bijlagen

  • Voorbeeld rapport dagrooster medewerkers.xlsx
    15,4 KB · Weergaven: 73
Met Power Query kom ik een heel eind...
 

Bijlagen

  • Voorbeeld rapport dagrooster medewerkers (AC).xlsx
    28 KB · Weergaven: 46
Laatst bewerkt:
Wie bedenkt zoiets ?
Samengevoegde cellen, lege kolommen, geen gebruik van kolom A.
 
Laatst bewerkt:
Ook maar een duit.
Code:
Sub hsv()
Dim sv, b, c, i as long, n As Long, tot As Long
sv = Cells(1, 2).CurrentRegion.Resize(, 12)
ReDim a(UBound(sv), 3)
For i = 3 To UBound(sv)
If Split(sv(i, 1), ":")(0) = "Employee" Then b = Split(sv(i, 1), ": ")(1):  n = n + IIf(n = 0, 0, 2)
If Split(sv(i, 1), ":")(0) = "Date" Then c = Split(sv(i, 1), ": ")(1)
   If b <> "" And c <> "" And Split(sv(i, 1), ": ")(0) <> "Date" And Split(sv(i, 1), ": ")(0) <> "Employee" Then
   If sv(i, 1) = "Daily Totals" Then
     a(n, 0) = a(n - 1, 0)
     a(n, 1) = a(n - 1, 1)
     a(n, 2) = "Totaal"
     a(n, 3) = tot
     tot = 0
   Else
     a(n, 0) = CDate(c)
     a(n, 1) = b
     a(n, 2) = sv(i, 1)
     a(n, 3) = CDate(Format(sv(i, 7) - sv(i, 4), "h:mm")) * 1440
     tot = tot + a(n, 3)
    End If
   n = b +1
  End If
 Next i
 Cells(5, 20).Resize(UBound(a), 4) = a
 Columns(20).Resize(, 4).AutoFit
End Sub
 
Laatst bewerkt:
Iedereen ontzettend bedankt voor de voorstellen. Van het weekend ga ik er mee verder.
 
Hoi Harry, ik heb de code gebruikt maar loopt vast bij n = b +1. Zelf heb ik onvoldoende kennis op het op te lossen. Heb ik iets verkeerd gedaan?
 
Moet zijn: n = n +1

Misschien is deze wel leuker.

Code:
Sub hsv()
Dim sv, i As Long, b, c, n As Long, tot As Long
sv = Cells(1, 2).CurrentRegion.Resize(, 12)
ReDim a(UBound(sv), 3)
For i = 3 To UBound(sv)
If Split(sv(i, 1), ":")(0) = "Employee" Then b = Split(sv(i, 1), ": ")(1):  n = n + IIf(n = 0, 0, 1)
If Split(sv(i, 1), ":")(0) = "Date" Then
 c = Split(sv(i, 1), ": ")(1)
  a(n, 0) = "datum"
  a(n, 1) = "naam medewerker"
  a(n, 2) = "activiteit"
  a(n, 3) = "Aantal minuten"
  n = n + 1
Else
   If b <> "" And c <> "" And Split(sv(i, 1), ": ")(0) <> "Date" And Split(sv(i, 1), ": ")(0) <> "Employee" Then
    If sv(i, 1) = "Daily Totals" Then
     a(n, 0) = a(n - 1, 0)
     a(n, 1) = a(n - 1, 1)
     a(n, 2) = "Totaal"
     a(n, 3) = tot
     tot = 0
    Else
     a(n, 0) = CDate(c)
     a(n, 1) = b
     a(n, 2) = sv(i, 1)
     a(n, 3) = CDate(Format(sv(i, 7) - sv(i, 4), "h:mm")) * 1440
     tot = tot + a(n, 3)
    End If
    n = n + 1
   End If
  End If
 Next i
 Cells(4, 20).Resize(UBound(a), 4) = a
 Columns(20).Resize(, 4).AutoFit
End Sub
 
Goedemorgen Harry, ik vind ze beide helemaal geweldig werken. Dank je wel voor de moeite.
 
Datum en naam samenvoegen

Goedemorgen Harry, is het mogelijk om het script aan te passen zodat ik de kolommen de datum en naam worden samengevoegd. Dat zou dan op dezelfde wijze moeten als tekst.samenvoegen van datum + naam. Vast bedankt voor de moeite.
 
Kijk maar even of het klopt zo.
Code:
Sub hsv()
Dim sv, i As Long, b, c, n As Long, tot As Long
sv = Cells(1, 2).CurrentRegion.Resize(, 12)
ReDim a(UBound(sv), 2)
For i = 3 To UBound(sv)
If Split(sv(i, 1), ":")(0) = "Employee" Then b = Split(sv(i, 1), ": ")(1):  n = n + IIf(n = 0, 0, 1)
If Split(sv(i, 1), ":")(0) = "Date" Then
 c = Split(sv(i, 1), ": ")(1)
  a(n, 0) = "datum + naam medewerker"
  a(n, 1) = "activiteit"
  a(n, 2) = "Aantal minuten"
  n = n + 1
Else
   If b <> "" And c <> "" And Split(sv(i, 1), ": ")(0) <> "Date" And Split(sv(i, 1), ": ")(0) <> "Employee" Then
    If sv(i, 1) = "Daily Totals" Then
     a(n, 0) = a(n - 1, 0)
     a(n, 1) = "Totaal"
     a(n, 2) = tot
     tot = 0
    Else
     a(n, 0) = CDate(c) & "  " & b
     a(n, 1) = sv(i, 1)
     a(n, 2) = CDate(Format(sv(i, 7) - sv(i, 4), "h:mm")) * 1440
     tot = tot + a(n, 2)
    End If
    n = n + 1
   End If
  End If
 Next i
 Cells(4, 20).Resize(UBound(a), 3) = a
 Columns(20).Resize(, 3).AutoFit
End Sub
 
Beste Harry, ik heb toch nog een vraag. Bij het samenvoegen van de datum en naam komt een spatie. Hoe kan ik d3code aanpassen zodat d3 spatie er uit gaat?
 
Geen idee waar het meer over gaat Carlo, maar zal ongetwijfeld dit...

Code:
 a(n, 0) = CDate(c) & "  " & b
...veranderd moeten worden in.
Code:
 a(n, 0) = CDate(c) &  b
 
Dank je wel, dat was inderdaad waarna ik op zoek was. Ik heb nog 1 vraag. Kan de datum ook direct worden omgezet naar een getal? Dus i.p.v. 01-04-2021 het getal 44288.
 
Maak van cdate(c) eens gewoon c
 
Als ik dat aanpas dan krijg ik op de derde regel een foutmelding. Heb ik nog iets vergeten c.q. over het hoofd gezien?

Else
a(n, 0) = CDate(c) & " " & b
a(n, 1) = sv(i, 1)
a(n, 2) = CDate(Format(sv(i, 7) - sv(i, 4), "h:mm")) * 1440
 
gokje, je formateert een negatieve tijd
 
Ik ga met @cow18 mee, en voor de datum als getal.
Code:
a(n, 0) = CLng(CDate(c)) & b
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan