Avatar billede macho Praktikant
29. november 2005 - 15:57 Der er 8 kommentarer og
1 løsning

Vagt-/grundtørn i kalender.

En sag for de virkelige excel-eksperter!!

I et regneark har jeg arbejdspladsens vagtkalender, som indeholder samtlige 28 medarbejderes grundtørn. Grundtørnen indtaster jeg pt. manuelt i hver enkelt celle (enten "D" eller "N"). Dette tager virkelig lang tid hver måned, at skulle indtaste for hver enkelt!

Grundtørnen kører over otte uger og starter så forfra igen. Er der en måned, hvorpå det kan gøres automatisk, så der i hver enkelt celle automatisk kan skrives "D" eller "N" eller ingenting (fri). Jeg tænker mig, at der jo skal være en startdato for grundtørnen, hvorfra det så skal regnes ud hvad der skal stå i cellen i hele kalendermåneden! Men altså: det er mere end jeg selv kan takle!

Vil meget gerne forklare mig nærmere, hvis nogen har lyst til at kikke på det ;-)

Anyone?
Avatar billede kabbak Professor
29. november 2005 - 22:14 #1
(Grundtørnen kører over otte uger )
er den ens for alle, hvis den er det, kan du så ikke sætte den ind her med komma imellem.

Sådan D,D,D,D,D, , ,N,N,N  o.s.v.

så må man kunne lave en kode der går ud fra den celle du står i.
Avatar billede macho Praktikant
29. november 2005 - 22:43 #2
Tørnen kører over otte uger - ja! Den er også ens for alle dog forskudt. Jeg gi'r lige et eksempel over otte uger, som du beder om:

D,N,,,D,,,N,,,D,N,,,,,D,N,,D,D,,D,N,,,,,D,N,,,D,,,N,,,D,N,,,,,D,N,,N,N,,D,N,,,,,

fin arbejdstørn, i øvrigt ;-)
Avatar billede macho Praktikant
29. november 2005 - 22:44 #3
Du får den lige med mellemrum på fridagene, hvilket måske er mere overskueligt:

D,N, , ,D, , ,N, , ,D,N, , , , ,D,N, ,D,D, ,D,N, , , , ,D,N, , ,D, , ,N, , ,D,N, , , , ,D,N, ,N,N, ,D,N, , , , ,
Avatar billede kabbak Professor
29. november 2005 - 23:56 #4
Prøv at teste denne

I den første celle skriver du hvilken dag den skal starte med i turnusen

1 = den første dag
56 = den sidste
når du har skrevet tallet og trykke enter, marker så igen så der er ramme omkring

kør så makroen
Jeg har kaldt fridage for F og den sidste i perioden for FS, det er for test skyld


Public Sub Turnus()
Dim Tur As Variant, A As Integer, B As Integer, Slut As Integer, I As Integer, Forfra As Boolean
Dim X As Integer, N As Integer
Tur = Array("D", "N", "F", "F", "D", "F", "F", "N", "F", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "D", "D", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "F", "D", "F", "F", "N", "F", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "N", "N", "F", "D", "N", "F", "F", "F", "F", "FS")
A = UBound(Tur)
B = ActiveCell.Column
Slut = Range("AF2").Column
Start = ActiveCell.Value

If Start + (Slut - B) > A Then Forfra = True
X = 0
For I = Start - 1 To (Slut + Start) - 1
If I > A Then Exit For
If Cells(2, X + B) = "" Then Exit For
ActiveCell.Offset(0, X) = Tur(I)
X = X + 1
Next

N = Slut - X
If Forfra Then
For I = 0 To N
If X > Slut Then Exit For
If Cells(2, X + B) = "" Then Exit For
ActiveCell.Offset(0, X) = Tur(I)
X = X + 1
Next
End If
End Sub
Avatar billede macho Praktikant
30. november 2005 - 00:34 #5
Det er utroligt, hvad man kan gøre. Det virkede jo første gang! Er det muligt gøre således, at man skriver dag for start (1 til 56) ved flere medarbejdere og så markere alle, hvorefter man kører makroen og felterne så bliver udfyldt for alle på én gang?
Avatar billede kabbak Professor
30. november 2005 - 00:39 #6
Marker cellerne du har skrever startdag i og kør makroen

Public Sub Turnus()
Dim Tur As Variant, A As Integer, B As Integer, Slut As Integer, I As Integer, Forfra As Boolean
Dim X As Integer, N As Integer
Tur = Array("D", "N", "F", "F", "D", "F", "F", "N", "F", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "D", "D", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "F", "D", "F", "F", "N", "F", "F", "D", "N", "F", "F", "F", "F", "D", "N", "F", "N", "N", "F", "D", "N", "F", "F", "F", "F", "FS")
A = UBound(Tur)
For Each c In Selection
B = c.Column
Slut = Range("AF2").Column
Start = c.Value

If Start + (Slut - B) > A Then Forfra = True
X = 0
For I = Start - 1 To (Slut + Start) - 1
If I > A Then Exit For
If Cells(2, X + B) = "" Then Exit For
c.Offset(0, X) = Tur(I)
X = X + 1
Next

N = Slut - X
If Forfra Then
For I = 0 To N
If X > Slut Then Exit For
If Cells(2, X + B) = "" Then Exit For
c.Offset(0, X) = Tur(I)
X = X + 1
Next
End If
Next
End Sub
Avatar billede macho Praktikant
30. november 2005 - 00:43 #7
Det er simpelthen helt perfekt, kabbak! Endnu en gang: Tusind tak for hjælpen - det er bare lækkert! Kom med et svar!
Avatar billede kabbak Professor
30. november 2005 - 00:44 #8
Et svar ;-))
Avatar billede macho Praktikant
30. november 2005 - 16:53 #9
Spørgsmål vedr. ovenstående er taget op igen her: http://exp.dk/spm/668656
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Excel kurser for alle niveauer og behov – find det kursus, der passer til dig

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester